2

起動される単純な削除トリガーを作成しましたが、0行が影響を受けました。親テーブルレコードが削除されました。ただし、レコードのテーブルも削除するのではなく、削除する必要があります。私は次のクエリを持っています。

ALTER trigger [dbo].[studentAuditActionDelete] on [dbo].[tblStudent]

after delete
AS

declare @studentId_Audit int;

    select @studentId_Audit = i.studentID from inserted i;  
    delete from studentAudit
    where
    studentId_Audit = @studentId_Audit
    PRINT 'AFTER Delete trigger fired.'
4

2 に答える 2

4

から選択してみましたかdeleted

select @studentId_Audit = d.studentID from deleted d;

には複数の行を含めることがdeletedでき、そのうちの1つだけを選択することに注意してください。(これは、すべてのトリガーが、、、およびを記憶するためのinsertedものupdatedですdeleted

于 2013-03-09T07:25:05.497 に答える
0

トリガーで変数を宣言しないでください。ソース テーブル DELETED で単純な JOIN を使用すると、複数の削除を使用できるようになります。

CREATE TRIGGER [dbo].[studentAuditActionDelete] on [dbo].[tblStudent]
FOR DELETE
AS
  DELETE a
  FROM studentAudit a JOIN deleted d ON a.studentId_Audit = d.studentID  
  PRINT 'AFTER Delete trigger fired.'  
于 2013-03-09T08:24:55.563 に答える