VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2756|回复: 10

求一个简单的触发器,没写过触发器,应该是很简单的

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-12-16 19:00:02 | 显示全部楼层 |阅读模式
TA
id mtype  mk     
1   aa    123
2   bb    123

TB
id ntype  Status        ts
1   aa    0                123
2   bb    1                123
3   bb    0                10


----------------
求一触发器,当更新TA中的mk时,TB中对应的ts也更新。

触发TB的条件是ntype=mtype and Status=0。

---
如对TA操作

update TA set mk='999' where mtype='bb'

那么TB经触发器的影响后应该为:
TB
id ntype  Status        ts
1   aa    0                123
2   bb    1                123
3   bb    0                999

------------求此触发器
回复

使用道具 举报

0

主题

49

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-12-16 19:15:01 | 显示全部楼层
create trigger t_update on ta
for update
as
begin
update tb
set tb.ts = ta.mk
from inserted ta
where tb.ntype=ta.mtype and tb.Status = 0
end
go
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-12-16 20:45:01 | 显示全部楼层
create trigger auto_update on TB
as
  update TB set ts = mk from inserted a where id = a.id and Status = 0
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-12-16 21:00:01 | 显示全部楼层
CREATE TRIGGER sync_update ON TA
FOR UPDATE
AS
if exists (select 1 from TB where ntype=INSERTED.mtype and Status=0)
    update TB set ts=INSERTED.mk
回复

使用道具 举报

0

主题

11

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-12-16 21:45:01 | 显示全部楼层
create trigger trigger_update on dbo.TA
for update
as
declare @type varchar(10)
declare @ts int
select @type=i.mytype,@ts=i.mk from inserted i
update TB set ts=@ts where ntype=@type and status=0
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-18 13:15:02 | 显示全部楼层
谢谢!
奇怪按上面的方法我建了触发器,为什么那个触发器一直都是编辑的状态(就是显示一支笔在那里)。 正常可以用的 应该是一个绿色的+号啊!


检查语法又显示成功,请问这是什么原因啊。
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-18 15:00:01 | 显示全部楼层


为什么那个触发器一直都是编辑的状态

要使用它,怎么样操作才能使用起来呢?
回复

使用道具 举报

1

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-19 13:00:02 | 显示全部楼层
用EXE 来触发呀
回复

使用道具 举报

1

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-19 13:15:01 | 显示全部楼层
不好意思,写错拉,是EXEC
回复

使用道具 举报

1

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-19 13:30:01 | 显示全部楼层
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'AA' AND type = 'TR')
   DROP TRIGGER AA

CREATE TRIGGER AA
ON TA
FOR UPDATE
AS
UPDATE TB SET TB.TS=TA.MK
FROM INSERTED A WHERE ID=A.ID AND STATUS = 0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表