读书人

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

发布时间: 2012-12-23 11:28:15 作者: rapoo

关于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. 所以用一个触发器就可以了。

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


读书人网 >SQL Server

热点推荐