create table wl(bookname varchar(8),company varchar(8),account varchar(8),bp varchar(8),amount_in int,amount_out int,status varchar(8))
insert into wl values('宁波','A','张三','01', 100,null,'right')
insert into wl values('宁波','A','张三','01',null, 100,'right')
insert into wl values('宁波','A','张三','02', 200,null,null)
insert into wl values('宁波','A','张三','02',null, 100,null)
insert into wl values('宁波','A','张三','03',null, 100,null)
goCREATE TRIGGER wl_gl ON wl
FOR UPDATE
AS
if update(bp)
begin
update aa
set
status= 'right '
from
wl aa,inserted bb
where
aa.bp=bb.bp
and
(select sum(isnull(amount_in,0)-isnull(amount_out,0)) from wl where bp=aa.bp)=0
and
aa.status is null
end
goupdate wl set bp='02' where bp='03'
goselect * from wl
/*
bookname company account bp amount_in amount_out status
-------- -------- -------- -------- ----------- ----------- --------
宁波 A 张三 01 100 NULL right
宁波 A 张三 01 NULL 100 right
宁波 A 张三 02 200 NULL right
宁波 A 张三 02 NULL 100 right
宁波 A 张三 02 NULL 100 right
*/
godrop trigger wl_gl
drop table wl
insert into wl values('宁波','A','张三','01', 100,null,'right')
insert into wl values('宁波','A','张三','01',null, 100,'right')
insert into wl values('宁波','A','张三','02', 200,null,null)
insert into wl values('宁波','A','张三','02',null, 100,null)
insert into wl values('宁波','A','张三','03',null, 100,null)
goCREATE TRIGGER wl_gl ON wl
FOR UPDATE
AS
if update(bp)
begin
update aa
set
status= 'right '
from
wl aa,inserted bb
where
aa.bp=bb.bp
and
(select sum(isnull(amount_in,0)-isnull(amount_out,0)) from wl where bp=aa.bp)=0
and
aa.status is null
end
goupdate wl set bp='02' where bp='03'
goselect * from wl
/*
bookname company account bp amount_in amount_out status
-------- -------- -------- -------- ----------- ----------- --------
宁波 A 张三 01 100 NULL right
宁波 A 张三 01 NULL 100 right
宁波 A 张三 02 200 NULL right
宁波 A 张三 02 NULL 100 right
宁波 A 张三 02 NULL 100 right
*/
godrop trigger wl_gl
drop table wl
解决方案 »
- 为什么只更新了最后一条数据
- 数据库实例是什么东西?
- SQL Server2000怎么实现翻页功能?每页显示10行
- 熟悉分区表的进来了
- 数据库刚安装完,企业管理器能打开,查询分析器也能打开并且能查询数据,但在网页上用conn调用的时候却不成功,请问该怎么办??在线等,
- 求一些基本的SQL SERVER语句,谢谢,今天晚上结
- 在一个存储过程中看到这个,请问是什么意思
- 98端裝 sqlserer2000 服務端sqlserver7.0 我用使用Auto Translate=False屬性能把以前的資料取出不會有亂,但我插入新的數據就會是亂碼!!!
- 新手问路————关于函数
- 使用DBLIB访问SQL SERVER时, 超过255字节的列中返回255个字节,我什么办法解决?
- 关于数据库用户(角色)权限的定义
- 关于分布式
现在碰到一个问题,就是该触发器可以在SQL表里更改BP时触发器执行,但是程序里更新时执行翻转,BP也没有更新
我的程序是delphi7.0做的,更新用ApplyUpdates(0);谢谢望指点