instead of,表示代替delete操作,而没有真正delete from category where id=5,当category表的删除时,同时触发了trigcategorydelete触发器,但是由于有instead of关键字,所以本身并不执行删除操作,而是执行触发器里的sql语句,从而可以替代之前的SQL语句。比如:
create trigger trigcategorydelete
on category
instead of delete
as
begin
declare @id int --定义一个变量id
select @id=id from deleted --从deleted临时表中,赋值id给变量@id
delete news where caId=@id --先删除该类别下的所有新闻
delete category where id=@id --然后删除新闻类别
end
当我们执行delete from category where id=5时,id=5的类别并没有真正删除,而是转而执行触发器里面的SQL语句
关于deleted表:
Deleted表用于存储DELETE 和 UPDATE语句所影响的行的复本。在执行DELETE 或 UPDATE语句时,行从触发器表中删除,并传输到deleted表中。Deleted表和触发器表通常没有相同的行。(//最后一句不是怎么明白啊?) by google