2013-03-09 93 views
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.' 

回答

3

你试过从deleted

select @studentId_Audit = d.studentID from deleted d; 

选择记住deleted可以包含多个行,你只能选择其中之一! (这是所有触发记住insertedupdateddeleted

0

不要在触发声明变量,使用与源表中删除的简单连接,您就可以使用多个删除

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.'