Как обновить две таблицы в одном операторе в SQL Server 2005?

Я хочу обновить две таблицы сразу. Как я делаю это в SQL Server 2005?

UPDATE 
  Table1, 
  Table2
SET 
  Table1.LastName='DR. XXXXXX', 
  Table2.WAprrs='start,stop'
FROM 
  Table1 T1, 
  Table2 T2
WHERE 
  T1.id = T2.id
AND 
  T1.id = '010008'
182
задан Luke Girvin 13 June 2019 в 00:25
поделиться

4 ответа

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

BEGIN TRANSACTION;

UPDATE Table1
  SET Table1.LastName = 'DR. XXXXXX' 
FROM Table1 T1, Table2 T2
WHERE T1.id = T2.id
and T1.id = '011008';

UPDATE Table2
SET Table2.WAprrs = 'start,stop'
FROM Table1 T1, Table2 T2
WHERE T1.id = T2.id
and T1.id = '011008';

COMMIT;
186
ответ дан 23 November 2019 в 06:05
поделиться

Извините, афаик, вы не можете этого сделать. Чтобы обновить атрибуты в двух разных таблицах, вам нужно будет выполнить два отдельных высказывания. Но они могут быть в партии (набор SQL отправлен на сервер в одном туристическом путешествии)

20
ответ дан 23 November 2019 в 06:05
поделиться

Вы не можете обновить две таблицы одновременно, но вы можете связать обновление в вставку, используя выход, и вы можете использовать этот вывод как присоединение для второго обновления:

DECLARE @ids TABLE (id int);
BEGIN TRANSACTION

UPDATE Table1 
SET Table1.LastName = 'DR. XXXXXX'  
OUTPUT INSERTED.id INTO @ids
WHERE T1.field = '010008';

UPDATE Table2 
SET Table2.WAprrs = 'start,stop' 
FROM Table2 
JOIN @ids i on i.id = Table2.id;

COMMIT;

Я изменил свой пример, где Будьте немного otther Field, чем ID, если ID ID Тебе не нужен этот модный вывод, вы можете просто обновить вторую таблицу для того же ID = '010008'.

77
ответ дан 23 November 2019 в 06:05
поделиться
 mysql> set @table_name := 'mytable';
 Query OK, 0 rows affected (0.02 sec)

 mysql> set @sql_text:=concat('create table ',@table_name,'(id int unsigned)');
 Query OK, 0 rows affected (0.00 sec)

из http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html

-121--5086429-

можно создать обработчик asp.net, обслуживающий файл (для asp.net mvc u можно выполнить результирующее действие вместо... это то, что я использую). Убедитесь, что он поддерживает возобновляемые загрузки.

, из которого можно отслеживать обслуживаемые байты.

Ps. это влечет за собой накладные расходы на производительность и позволяет IIS обслуживать его

обновить 1: Я использовал что-то довольно похожее на это http://dotnetslackers.com/articles/aspnet/Range-Specific-Requests-in-ASP-NET.aspx ... и статья имеет довольно четкое объяснение того, что внутри. Вы, вероятно, можете использовать это как есть, см. пример в этой публикации.

-121--3665423-

Необходимо поместить две инструкции по обновлению в транзакцию

7
ответ дан 23 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: