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

关于update和insert,上面下实例,求赐教

2012-12-23 
关于update和insert,下面上实例,求赐教我建有两个触发器,一个是insert,另一个是update,在实验的时候,发现i

关于update和insert,下面上实例,求赐教
我建有两个触发器,一个是insert,另一个是update,在实验的时候,发现insert可以正常处理,而update就重复操作了,比如我往借阅信息表中添加一条记录,状态为未还,insert的触发器使得5变为4,而如果修改状态为已还,4就变为6了,请大神指教一下,个人感觉就是insert和update的问题下面上代码

ALTER TRIGGER [dbo].[before_insert_jieyue1] ON [dbo].[借阅信息表]
     FOR insert
 AS
IF EXISTS ( SELECT  1
                     FROM    dbo.借阅信息表
                     WHERE   读者编号 IN ( SELECT    读者编号
                                       FROM      inserted )
                             AND 状态  IN ( '未还' ) ) 
          BEGIN    
                    update dbo.读者信息表
                    set 当前可借数=当前可借数-1
                    where 读者编号=(select 读者编号 from inserted)
                    update dbo.读者信息表
                    set 借阅次数=借阅次数+1
                    where 读者编号=(select 读者编号 from inserted)
                    update dbo.图书资料表
                    set 馆内剩余本数=馆内剩余本数-1
                    where 图书编号=(select 图书编号 from inserted) 
end
这是insert的,下面是update的

ALTER TRIGGER [dbo].[before_insert_jieyue] ON [dbo].[借阅信息表]
     FOR update
 AS
IF EXISTS ( SELECT  1
                     FROM    dbo.借阅信息表
                     WHERE   读者编号 IN ( SELECT    读者编号
                                       FROM      inserted )
                             AND 状态  IN ( '已还' ) ) 
          BEGIN    


                    update dbo.读者信息表
                    set 当前可借数=当前可借数+1
                    where 读者编号=(select 读者编号 from inserted)
                    update dbo.图书资料表
                    set 借出次数=借出次数+1
                    where 图书编号=(select 图书编号 from inserted)
                    update dbo.图书资料表
                    set 馆内剩余本数=馆内剩余本数+1
                    where 图书编号=(select 图书编号 from inserted) 
end

[解决办法]
好好检查一下子查询  是不是表之间相互影响了
[解决办法]
if update(状态)
[解决办法]
update是先delete,再insert. 所以用一个触发器就可以了。
[解决办法]

引用:
update是先delete,再insert. 所以用一个触发器就可以了。

你是说直接用update,可以插入新记录吗?
[解决办法]
引用:
update是先delete,再insert. 所以用一个触发器就可以了。

经过试验,还是原样,没有改变什么,只是少了个触发器
[解决办法]
有木有大神,这问题很幼稚吗?


热点排行