首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在update触发器中怎么使用修改前,后的数据

2012-10-08 
在update触发器中如何使用修改前,后的数据?1.在update触发器中如何使用修改前,后的数据?ifupdate(字段1)be

在update触发器中如何使用修改前,后的数据?
1.在update触发器中如何使用修改前,后的数据?
   if   update(字段1)  
  begin  
  ...  
  end

有哪位大牛能告诉我上述 语法 什么意思? 最好把上面的语法 写出具体的代码,并加上注释! 我肯定是会给粉的!

[解决办法]
新数据在 inserted 表
老数据在 deleted 表 

你去看下触发器的定义就明白了。
[解决办法]

SQL code
USE [tempdb]GOCREATE TABLE [dbo].[TEST](    [dtime] [datetime] NULL,    [name] [nvarchar](50) NULL) ON [PRIMARY]GOcreate TRIGGER t_test    ON  dbo.test   for insert,update --在插入、更新之后触发AS BEGIN    -- SET NOCOUNT ON added to prevent extra result sets from    -- interfering with SELECT statements.    SET NOCOUNT ON;    --inserted 插入的数据全部会存放在这里面 ,表结构与原表一样    --deleted 所有更新之前的数据或删除之前的数据全部存放在这里,表结构与原表一样    --如果插入的或者更新的是张三,则报错    if exists(select 1 from inserted where name='张三')        begin            RAISERROR ('不允许insert 张三',16,1)             ROLLBACK tran            begin tran        endENDGOINSERT INTO TEST(dtime ,name )SELECT getdate(),'张三' --可以看到并没有插入INSERT INTO TEST(dtime ,name )SELECT getdate(),'张三1'SELECT * FROM TESTdrop table [TEST]--消息 50000,级别 16,状态 1,过程 t_test,第 15 行--不允许insert 张三--(1 行受影响)--(1 行受影响)--dtime                   name------------------------- ----------------------------------------------------2012-09-25 15:31:45.740 张三1--(1 行受影响)
[解决办法]
UPDATE触发器有两个临时表,inserted,delete

热点排行