2016-05-27 3 views
2

Я полный новичок для SQL Server, и я достиг своего предела.SQL Обновление таблицы из другой таблицы

В настоящее время я использую скрипт для обновления таблицы из другой таблицы с использованием столбца. Поскольку обе базы данных назначены двум различным сторонним программам, я создал сценарий .bat, который будет использоваться для диспетчера задач на сервере Windows, таким образом, он может обновляться каждые 10 минут.

Хотя это проверено и работает, я чувствую, что должен быть способ создать связь между двумя базами данных без необходимости использовать эту задачу.

UPDATE therefore.dbo.thecat51 
SET num_factura = 
(SELECT therefore.dbo.documentos.num_factura 
FROM therefore.dbo.Documentos 
WHERE therefore.dbo.thecat51.num_albaran=therefore.dbo.documentos.num_albaran) 
WHERE therefore.dbo.thecat51.num_albaran = 
(SELECT therefore.dbo.documentos.num_albaran 
FROM therefore.dbo.Documentos 
WHERE therefore.dbo.thecat51.num_Albaran = therefore.dbo.documentos.num_albaran) 

Кроме того, мы используем SQL Server Express, поэтому у меня нет возможности создать запланированное задание.

+0

Связанный сервер - это, вероятно, то, что вы ищете -> https://www.google.fr/search?q=linked+server+sql+server&ie=utf-8&oe=utf-8&client=firefox-b-ab&gfe_rd = cr & ei = J0pIV6TBE-2v8weI1oLoAg –

ответ

0

Вы можете сделать UPDATE с INNER JOIN, чтобы выполнить обновление, необходимо:

UPDATE A SET 
    num_factura = B.num_factura 
FROM therefore.dbo.thecat51 A 
    INNER JOIN therefore.dbo.Documentos B 
     ON A.num_albaran = B.num_albaran 
0

Используйте INNER JOIN между вашими двумя таблицами. В то время я отправил это, вы не сказали нам, какой RDBMS вы используете, так что я дам ответы на SQL Server и MySQL:

SQL Server:

UPDATE t1 
SET t1.num_factura = t2.num_factura 
FROM therefore.dbo.thecat51 AS t1 
INNER JOIN therefore.dbo.Documentos AS t2 
    ON t1.num_albaran = t2.num_albaran 

MySQL:

UPDATE therefore.dbo.thecat51 AS t1 
INNER JOIN therefore.dbo.Documentos AS t2 
    ON t1.num_albaran = t2.num_albaran 
SET t1.num_factura = t2.num_factura 
+0

Я пробовал, и он работает, но он работает одинаково, то есть мне нужно вручную обновить таблицу или создать скрипт, который выполняется каждые 10 минут. То, что я просил, - это способ связать две таблицы, чтобы они автоматически обновлялись каждый раз при добавлении значения. Спасибо за быстрый ответ. –

+1

@ alex-e вам нужен триггер ... –

+0

Извините за поздний ответ, но я занимаюсь другой работой. Я искал триггеры, и это похоже на то, что я ищу. –

Смежные вопросы