更新记录中字段的触发器

QuickPai 2010-05-24 03:55:51
我想写一个触发器,当记录中的一个bool字段由True变为False时执行一个操作,当由False变为True时执行一个操作
该怎么写
...全文
35 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
QuickPai 2010-05-25
试了下,好像true 变为 true , false 变成 false 触发器没有触发哎。。。
回复
ACMAIN_CHM 2010-05-25
[Quote]试了下,好像true 变为 true , false 变成 false 触发器没有触发哎。。。[/Quote]你需要更新其它字段

比如你 update table1 set col1=123; 但没有改变 col2=true
回复
ACMAIN_CHM 2010-05-24
[Quote]为什么需要判断OID的值呢?[/Quote]

如果是 true 变为 true , false 变成 false 呢?
回复
QuickPai 2010-05-24
为什么需要判断OID的值呢?
回复
ACMAIN_CHM 2010-05-24
[Quote]SQL code

CREATE TRIGGER T_Test ON dbo.SalesOrder
FOR UPDATE
AS
IF UPDATE(bVerify)
BEGIN
declare @flag bit
select @flag=bVerify from deleted
if(@flag='True')
UPDATE dbo.SalesOrder set fAmount=123
else
UPDATE dbo.SalesOrder set fAmount=321
END


这样行不?[/Quote]

这样不行!你还需要判断 old 的值。
回复
QuickPai 2010-05-24

CREATE TRIGGER T_Test ON dbo.SalesOrder
FOR UPDATE
AS
IF UPDATE(bVerify)
BEGIN
declare @flag bit
select @flag=bVerify from deleted
if(@flag='True')
UPDATE dbo.SalesOrder set fAmount=123
else
UPDATE dbo.SalesOrder set fAmount=321
END


这样行不?
回复
QuickPai 2010-05-24
用的是SQL Server
在更新此记录中的此字段时触发,也就是FOR UPDATE触发器
不是INSERT
回复
ACMAIN_CHM 2010-05-24
当记录中的一个bool字段由True变为False时执行一个操作,当由False变为True时执行一个操作

不知道你用的什么数据库。只好写个大概。

if old.bool字段=true and new.bool字段=false then //一个bool字段由True变为False时
执行一个操作
end if

if old.bool字段=false and new.bool字段=true then // 当由False变为True时
执行一个操作
end if
回复
wwwwb 2010-05-24
在BEFORE INSERT 中
IF NEW.bool字段 THEN
一个操作
ELSE
一个操作
END IF
回复
相关推荐
发帖
其他数据库
创建于2007-09-28

2187

社区成员

其他数据库开发 其他数据库
申请成为版主
帖子事件
创建了帖子
2010-05-24 03:55
社区公告
暂无公告