一个触发器的问题

chang1216 2007-07-09 04:44:49
我想 写一个触发器 有 6个字段 控制 另一个字段 想实现 6个字段中的任何一个或者几个 值由1变成 0 另一个字段也跟着变化 请问怎么写 谢谢大家了
...全文
616 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
稍微有点无敌 2007-07-10
  • 打赏
  • 举报
回复
jf
avon2006 2007-07-10
  • 打赏
  • 举报
回复
学习,,,,
hm7921936 2007-07-09
  • 打赏
  • 举报
回复
基本没什么可答的了... JF吧
hellowork 2007-07-09
  • 打赏
  • 举报
回复
把我上面回复的代码复制到你的查询分析器中执行也不正确吗?
你的SQLSERVER打补丁了吗?
chang1216 2007-07-09
  • 打赏
  • 举报
回复
可是在我这里 不行啊
hellowork 2007-07-09
  • 打赏
  • 举报
回复
触发器代码没问题,以下在我的机器上成功执行:
环境:windows2003 sp1 + SQLSERVER2000sp4

if object_id('tbTest') is not null
drop table tbTest
GO
CREATE TABLE [dbo].[tbTest] (
[person_id] [int] NULL ,
[zhiwu_id] [int] NULL,
[Person_biye] [bit] NULL,
[jiaojingkemuone] [int] NULL,
[jiaojingkemutwo] [int] NULL
) ON [PRIMARY]
GO
insert tbTest
select 1,1,1,1,1 union all
select 2,1,1,1,1 union all
select 3,1,1,1,1 union all
select 4,1,1,1,1 union all
select 5,1,1,1,1
GO
create trigger tr_update_tbTest
on tbTest
for update
as
update a set Person_biye=0
from tbTest a,inserted i,deleted d
where a.Person_id=i.Person_id
and i.Person_id=d.Person_id
and (i.jiaojingkemuone=0 and d.jiaojingkemuone=1 or
i.jiaojingkemutwo=0 and d.jiaojingkemutwo=1)
GO

----更新
update tbTest set jiaojingkemuone = 0 where Person_id = 2

----查看
select * from tbTest

----清除测试环境
drop table tbTest

/*结果(person_id=2的Person_biye已经被成功更新为0)
person_id zhiwu_id Person_biye jiaojingkemuone jiaojingkemutwo
----------- ----------- ----------- --------------- ---------------
1 1 1 1 1
2 1 0 0 1
3 1 1 1 1
4 1 1 1 1
5 1 1 1 1
*/

chang1216 2007-07-09
  • 打赏
  • 举报
回复
搞不懂了 兄弟们 还是不好用 查询分析器里 怎么测试阿 根本运行不通
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
在查询分析器测试,不要在程序里看结果
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
update BM_xueyuan set jiaojingkemuone=0 --要求jiaojingkemuone原来是1的
where Person_id=1


select * from BM_xueyuan
where Person_id=1

chang1216 2007-07-09
  • 打赏
  • 举报
回复
是啊 我修改记录的时候 如果 jiaojingkemuone 等六个字段 其中一个或者多个变化了 Person_biye 这个字段 就变成 0
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
作用是在你修改记录的时候显现

chang1216 2007-07-09
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BM_person_zhiwu]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BM_person_zhiwu]
GO

CREATE TABLE [dbo].[BM_person_zhiwu] (
[person_id] [int] NULL ,
[zhiwu_id] [int] NULL
) ON [PRIMARY]
GO
数据就很简单了 填一条两条 就行了 谢谢你 哥们
hellowork 2007-07-09
  • 打赏
  • 举报
回复
请把表结构写出来,再写点测试数据,我帮你测试一下.
chang1216 2007-07-09
  • 打赏
  • 举报
回复
是啊 关键他 不好用阿 兄弟 没有达到 效果 也就是 第七个字段没有 随之变化
hellowork 2007-07-09
  • 打赏
  • 举报
回复
代码和逻辑看不出有什么问题.
chang1216 2007-07-09
  • 打赏
  • 举报
回复

create trigger tr_BM_xueyuan1_update
on BM_xueyuan
for update
as

update a set
Person_biye=0
from BM_xueyuan a,inserted i,deleted d
where a.Person_id=i.Person_id
and i.Person_id=d.Person_id
and (i.jiaojingkemuone=0 and d.jiaojingkemuone=1 or
i.jiaojingkemutwo=0 and d.jiaojingkemutwo=1 or
i.jiaojingkemutree=0 and d.jiaojingkemutree=1 or
i.jiaotongjuone=0 and d.jiaotongjuone=1 or
i.jiaotongjutwo=0 and d.jiaotongjutwo=1 or
i.jiashizheng=0 and d.jiashizheng=1 or
i.jieyezheng=0 and d.jieyezheng=1 )
这样吗 没有语法错误了 可是 不好使啊 没有达到预期效果
hellowork 2007-07-09
  • 打赏
  • 举报
回复
update a
Person_biye=0
------------------------------------------
update a SET --却个set
Person_biye=0
chang1216 2007-07-09
  • 打赏
  • 举报
回复
怎么了哥们下班了吗?
chang1216 2007-07-09
  • 打赏
  • 举报
回复
create trigger tr_BM_xueyuan1_update
on BM_xueyuan1
for update
as

update a
Person_biye=0
from BM_xueyuan a,inserted i,deleted d
where a.Person_id=i.Person_id
and i.Person_id=d.Person_id
and (i.jiaojingkemuone=0 and d.jiaojingkemuone=1 or
i.jiaojingkemutwo=0 and d.jiaojingkemutwo=1 or
i.jiaojingkemutree=0 and d.jiaojingkemutree=1 or
i.jiaotongjuone=0 and d.jiaotongjuone=1 or
i.jiaotongjutwo=0 and d.jiaotongjutwo=1 or
i.jiashizheng=0 and d.jiashizheng=1 or
i.jieyezheng=0 and d.jieyezheng=1 )
我这样写的 说
Person_biye=0 这是第七行 有错误
昵称被占用了 2007-07-09
  • 打赏
  • 举报
回复
把tablename改成BM_xueyuan

create trigger tr_BM_xueyuan_update
on BM_xueyuan
for update
as

update a
Person_biye=0
from BM_xueyuan a,inserted i,deleted d
where a.Person_id=i.Person_id
and i.Person_id=d.Person_id
and (i.jiaojingkemuone=0 and d.jiaojingkemuone=1 or
i.jiaojingkemutwo=0 and d.jiaojingkemutwo=1 or
i.jiaojingkemutree=0 and d.jiaojingkemutree=1 or
i.jiaotongjuone=0 and d.jiaotongjuone=1 or
i.jiaotongjutwo=0 and d.jiaotongjutwo=1 or
i.jiashizheng=0 and d.jiashizheng=1 or
i.jieyezheng=0 and d.jieyezheng=1 )
加载更多回复(8)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧