1

I have written a simple trigger which sets a column value with the id column value. This is my trigger.

CREATE TRIGGER SubSectionsPrioritytrigger
ON SubSections
AFTER INSERT
AS
UPDATE dbo.SubSections
SET Priority = Id

After writing this trigger that, does this updates all the records after each insert. Or the only created new row.

Could some one provide any info on this.

Thanks.

4

3 に答える 3

4

それはあなたが書いたことを正確に行います

UPDATE dbo.SubSections
SET Priority = Id

すべての行が更新されます。

これを次のように変更できます

UPDATE dbo.SubSections  
SET  SubSections.Priority = Inserted.Id 
FROM INSERTED
WHERE INSERTED.id = SubSections.id

これは、挿入された行にのみ影響します。

于 2013-01-27T18:43:40.977 に答える
4

挿入された行だけを更新するには、次のようにします。

UPDATE dbo.SubSections  
SET  SubSections.Priority = SubSections.Id 
FROM INSERTED
WHERE INSERTED.Id = dbo.SubSections.Id
于 2013-01-27T18:48:33.320 に答える
2

最後に挿入された行だけを必要な値に更新するには、その行を他の行から一意にする行 ID を指定する必要があります。トリガーで、テーブル内のすべての行を更新する where 句を指定していません。トリガーが関連付けられているテーブルで操作/イベントが発生するたびに、新しいレコードが挿入/更新または削除され、SQL Server のメモリにマジック テーブルが作成され、"Inserted" というキーワードを使用してそのマジック テーブルにアクセスできます。挿入または更新の場合は「削除済み」、削除の場合は「削除済み」。したがって、クエリは次のようになります。

UPDATE dbo.SubSections
SET SubSections.Priority = SubSections.Id FROM INSERTED WHERE INSERTED.Id = dbo.SubSections.Id

于 2013-01-27T19:11:28.297 に答える