[英]How can I update some columns table2 from table1 automatically after insert any row in table1 (SQL Server)?
我有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 自動更新 table2 中的列ranking
。
我想我應該使用觸發器,但我不知道如何使用?
我使用以下代碼但不起作用:
CREATE TRIGGER Table1Trigger
ON Table1
AFTER INSERT
BEGIN
UPDATE Table2
SET ranking = Table1.ranking
WHERE Table1.id = Table2.id;
END;
大概你真的想要這個:
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
的查詢中沒有 object。 但是,您也不太可能希望使用表Table1
中的每一行,而是只使用插入的行(在偽表inserted
中)。
我們可以使用 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.