求sql触发器写法,比较简单,但我不会写。谢谢了

小可同学 2011-07-04 03:20:34

表A 有一字段rwzt(任务状态),rwid
表B 有一字段wczt(完成状态),rwid
B表和A表是多对一的关系,
假如rwid为1,B表里对应rwid为1的企业有100家,
B每完成一家企业就需要更新一次B表的完成状态
当B表的rwid为1的所有wczt都完成以后,
需要一个触发器去更改A表的rwid为1的rwzt=1
描述的应该可以看懂吧,就是不会写触发器,希望有好心人帮我写一下谢谢了,分不多.
CREATE TRIGGER qy_sdhc_rwxd_tg
ON qy_sdhc_rwxd_zrdw
AFTER UPDATE
AS
BEGIN
--这里不会写
END
GO
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小可同学 2011-07-04
  • 打赏
  • 举报
回复
OK刚才下班了回来给分 呵呵 谢谢你俩 我懂了
equn93 2011-07-04
  • 打赏
  • 举报
回复
……
deleted是更新B表是自动产生的临时表,不需要你去建立。
照下面这样写就OK了

CREATE TRIGGER trigger_B
ON B
AFTER UPDATE
AS
BEGIN
DECLARE @rwid INT
SELECT @rwid=rwid FROM deleted

IF not exists(select 1 from B where wczt<>1 and rwid=@rwid)
BEGIN
UPDATE A
SET rwzt=1
WHERE rwid=@rwid
END
END
小可同学 2011-07-04
  • 打赏
  • 举报
回复
帮我完善一下sekai2011的写法吧,我的sql能力实在有限,需要我建立deleted这个biao表吗?
现在是我不清楚B表更新的是哪个任务,只要该任务下的所有企业都完成了就更新A表任务状态
equn93 2011-07-04
  • 打赏
  • 举报
回复
你也可以这样写

DECLARE @rwid INT
SELECT @rwid=rwid FROM deleted

IF not exists(select 1 from B where wczt<>1 and rwid=@rwid)
BEGIN
UPDATE A
SET rwzt=1
WHERE rwid=@rwid
END
equn93 2011-07-04
  • 打赏
  • 举报
回复
deleted是临时表,
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

更新操作可以认为是执行了两个操作,先把那一行记录delete掉,然后再insert,
这样update操作实际上就对deleted表和inserted表的操作
小可同学 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sekai2011 的回复:]

SQL code


CREATE TRIGGER trigger_B
ON B
AFTER UPDATE
AS
BEGIN
DECLARE @i INT ,@rwid INT
SELECT @rwid=rwid FROM deleted
SELECT @i=COUNT(1) FROM b
WHERE wczt<>1
……
[/Quote]
不明白这个deleted是什么意思,我现在不清楚他们更新的是哪个任务的状态,
sekai2011 2011-07-04
  • 打赏
  • 举报
回复


CREATE TRIGGER trigger_B
ON B
AFTER UPDATE
AS
BEGIN
DECLARE @i INT ,@rwid INT
SELECT @rwid=rwid FROM deleted
SELECT @i=COUNT(1) FROM b
WHERE wczt<>1
AND rwid=@rwid

IF @i<=0
BEGIN
UPDATE A
SET rwzt=1
WHERE rwid=@id
END
END

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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