帮兄弟建一个触发器,急!!!

寂寞风向标 2010-04-06 11:42:52
小弟现在想写个触发器,
其中涉及到两个表 项目表【table A 】,合同表【table B】
项目表中有项目状态列【Ostatus】和所属合同表编号列【belongContractno】
当项目表中的合同表编号等于0401【随便等于一个合同编号】的项目状态列中的数据更新值等于2【项目完成】时,
触发触发器,让触发器遍历整个项目表中所有合同编号等于0401的项目状态列,当项目表中项目状态列的值都为 2 时,则更新合同表中的合同标号等于0401的合同状态列【Cstatus】 =2【完成】、

不知道我描述的请不清楚,这个触发器怎么建,兄弟第一次建立触发器,还不知道这个触发器应该建立在哪个表中?请各位仁兄给予帮助!谢谢
...全文
69 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
寂寞风向标 2010-04-06
  • 打赏
  • 举报
回复
表 contactinfo, 字段contactno,contractstatus
表 objectinfo, 字段belongcontactno,objectstatus

当objectinfo的belongcontactno列值等于 0401的 objectstatus 更新 ==2后,触发器被执行,
执行内容,首先遍历所有belongcontactno 等于0401的objectstatus 列,如果都等于2
那么更新contactinfo表中contactno列等于 0401的contractstatus值为2
Yang_ 2010-04-06
  • 打赏
  • 举报
回复
create trigger tr_A_Update
on A
for Update
as

update b set
Cstatus =2
from b,inserted i
where b.belongContractno = i.belongContractno
and i.Ostatus = 2
and not exists (
select 1
from a
where belongContractno = i.belongContractno
and isnull(Ostatus,0) <> 2 -- 如果Ostatus不可空,这句应该写成 Ostatus <> 2
)

go
寂寞风向标 2010-04-06
  • 打赏
  • 举报
回复
让触发器遍历整个项目表中所有合同编号等于0401的项目状态列, 是什么意思?

这个项目表和合同表是关联表,项目表隶属合同表,属一对多的关系,一个合同表中的编号[主键]可以包含多个项目信息,
这个0401我只是随便写的一个合同编号,在项目表中也许有N个与这个合同编号为0401相关的项目信息,当项目表中的任何一条所属合同号等于0401的项目状态列更新值等于2【项目完成】,则触发器被触发,首先更新整个项目表中所有所属项目编号等于0401的项目信息的项目状态列扫描一遍,如果都等于2【项目完成】,则更新合同表中合同号为0401的合同信息中的合同状态列,让其为值为2【合同完成】
华夏小卒 2010-04-06
  • 打赏
  • 举报
回复
描述要简单化


表,字段,

修改哪个,触发哪个

东那个升 2010-04-06
  • 打赏
  • 举报
回复
不需要建触发器。。。。
--小F-- 2010-04-06
  • 打赏
  • 举报
回复
让触发器遍历整个项目表中所有合同编号等于0401的项目状态列, 是什么意思?
htl258_Tony 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yang_ 的回复:]
改下字段名和表名


SQL code
create trigger tr_objectinfo_Update
on objectinfo
for Update
as

update b set
contractstatus=2
from contactinfo b,inserted i
where b.contactno= i.belongContractno
a……
[/Quote]UP海爷
Yang_ 2010-04-06
  • 打赏
  • 举报
回复
改下字段名和表名

create trigger tr_objectinfo_Update
on objectinfo
for Update
as

update b set
contractstatus=2
from contactinfo b,inserted i
where b.contactno= i.belongContractno
and i.objectstatus= 2
and not exists (
select 1
from objectinfo
where belongContractno = i.belongContractno
and isnull(objectstatus,0) <> 2 -- 如果objectstatus不可空,这句应该写成 objectstatus<> 2
)

go

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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