在A表建触发器,其他的就不用管了,符合条件的话,sql 自己帮你插入 b 表CREATE TRIGGER test ON a FOR update --以上是命名,其 test 是触发器的名字,a 是表名 --update是当对表 a 进行更新的时候触发 AS BEGIN DECLARE @a1 int DECLARE @a2 int DECLARE @a3 int
SELECT @a1=pid,@a1=demand,@a1=workstatus FROM INSERTED if @a1=a and @a2=2 and @a3=3 --加上你的判断条件 比如 a1=xx a2=yy a3=zz insert into b (b1,b2,b3) values(a1,a2,a3)
pid demand workstatus
1 2 3
1 3 3
1 4 3
2 2 3
2 3 3
2 4 1
3 2 3
3 3 3
表B 如下
pid demand workstatus
1 2 3
1 3 3
1 4 3
2 2 1
2 3 1
两个表 关系是:在表A中只有状态列的值为3,才能插入结果表B中,如,2 4 1 则在表B中没有此条数据。
如果表A的状态为3则表示A:A结束,如果所对应的pid有一个为1则表示A:A未结束中,如果全是1则表示A:A未开始
而表B中同是也有状态则只能显示表B中的状态,同样如果表A中的是3表B中有状态是1则B:B未结束,是3则:B结束。显示所有A中的数据 并加上状态 结果应该为 pid demand workstatus
1 2 B结束
1 3 B结束
1 4 B结束
2 2 B未结束中
2 3 B未结束中
2 4 A未开始
3 2 A未结束中
3 3 A未结束中
FOR update
--以上是命名,其 test 是触发器的名字,a 是表名
--update是当对表 a 进行更新的时候触发
AS
BEGIN
DECLARE @a1 int
DECLARE @a2 int
DECLARE @a3 int
SELECT @a1=pid,@a1=demand,@a1=workstatus FROM INSERTED
if @a1=a and @a2=2 and @a3=3 --加上你的判断条件 比如 a1=xx a2=yy a3=zz
insert into b (b1,b2,b3) values(a1,a2,a3)
end
PID 都只有一个,哪来全部和一个的区分,而且没有指明是哪个表的。