SQL插入,删除,更新

时间:2013-06-08 03:48:58

标签: mysql sql sql-server-2012-express

所以我看到SQL有一些表,用于保存表中可能引用的新插入和删除的数据。我没有注意到有关更新数据的表格。我目前正在使用触发器,我需要将触发器应用于更新。我该怎么做?

USE [examene]
GO
/****** Object:  Trigger [dbo].[trig1]    Script Date: 6/8/2013 6:48:26 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[trig1] on [dbo].[participari]
after insert,update,delete
as
begin
    if (exists (select * from deleted))
        rollback

    if (exists (select * from inserted,proiecte
where inserted.idpr = proiecte.idpr
and deadline<dela union 
select * from inserted,proiecte
where inserted.idpr = proiecte.idpr and inserted.panala>proiecte.deadline))
        rollback
end
到目前为止,这是我的触发器

1 个答案:

答案 0 :(得分:1)

没有updated虚拟表这样的东西。发生更新时,可能会在deleted中找到旧值,并在inserted

中找到新值
  

<强> Use the inserted and deleted Tables
  删除的表存储DELETE期间受影响的行的副本   更新语句。在执行DELETE或UPDATE期间   语句,行从触发器表中删除并传输到   删除的表。

     

通常删除的表和触发表   没有共同的行。 inserted表存储了。的副本   INSERT和 UPDATE 语句期间受影响的行。插入期间或   更新事务,新行添加到插入的表和   触发表。插入表中的行是。的副本   触发器表中的新行。

     

更新交易类似于删除操作,后跟一个   插入操作;先将旧行复制到已删除的表中,   然后将新行复制到触发器表和   插表。