我有table1:
id name ranking energy
-------------------------------
222 tom 15 f
333 sara 11 f
333 sara 2 a
111 jhon 4 h
111 jhon 16 f
333 sara 13 g
222 tom 12 j
并且table2:
id name ranking
-------------------
111 jhon 2
222 tom 1
333 sara 0
我希望對 table1 的任何行插入自動更新rankingtable2 中的列。
我想我應該使用觸發器,但我不知道如何?
我使用下面的代碼但不起作用:
CREATE TRIGGER Table1Trigger
ON Table1
AFTER INSERT
BEGIN
UPDATE Table2
SET ranking = Table1.ranking
WHERE Table1.id = Table2.id;
END;
uj5u.com熱心網友回復:
大概你真的想要這個:
CREATE TRIGGER dbo.Table1Trigger
ON dbo.Table1
AFTER INSERT
AS --AS was missing
BEGIN
UPDATE T2
SET ranking = i.ranking
FROM dbo.Table2 T2
JOIN inserted i ON T2.id = i.id;
END;
Table1在您的嘗試中沒有背景關系;查詢中沒有定義為 的物件Table1。但是,您極不可能使用table 中的每一行Table1,而只是插入的行(在偽 table 中inserted)。
uj5u.com熱心網友回復:
我們可以使用 OUTPUT CLAUSE 代替觸發器
DECLARE @TmpTable TABLE (ID INT, ranking VARCHAR(100))
INSERT TestTable (ID, TEXTVal)
OUTPUT Inserted.ID ,Inserted.TEXTVal INTO @TmpTable
VALUES (2,'SecondVal')
UPDATE T2
SET ranking = i.ranking
FROM dbo.Table2 T2
JOIN @TmpTable i ON T2.id = i.id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/461144.html
上一篇:在特定號碼上設定唯一欄位
