大家好。
现在要更新一张表,用户更新完表的数据,我要重新定义这个字段值。
例如,表TABLE1中,有一字段F,当用户修改为值S1时,我要让值变成S2,更新到表中。
我想用触发器来解决,不知道这个思路怎么样。
我用的是触发器的UPDATECREATE TRIGGER UpdateS
ON TABLE1
AFTER INSERT
AS
BEGIN
update a
set a.s='s2'
from
TABLE1 a
INNER JOIN INSERTED b
on a.keyfield=b.keyfield
where a.s='s1' and b.s='s1'
但这样UPDATE就死循环了。请问我改如何让用户的值S1自动变成S2,存放到TABLE1中。(前提是最好用SQL来解决,不要改程序)
谢谢!
现在要更新一张表,用户更新完表的数据,我要重新定义这个字段值。
例如,表TABLE1中,有一字段F,当用户修改为值S1时,我要让值变成S2,更新到表中。
我想用触发器来解决,不知道这个思路怎么样。
我用的是触发器的UPDATECREATE TRIGGER UpdateS
ON TABLE1
AFTER INSERT
AS
BEGIN
update a
set a.s='s2'
from
TABLE1 a
INNER JOIN INSERTED b
on a.keyfield=b.keyfield
where a.s='s1' and b.s='s1'
但这样UPDATE就死循环了。请问我改如何让用户的值S1自动变成S2,存放到TABLE1中。(前提是最好用SQL来解决,不要改程序)
谢谢!
ON TABLE1
for update --这里怎么能是INSERT
AS
BEGIN
update a
set a.s='s2'
from
TABLE1 a
INNER JOIN INSERTED b
on a.keyfield=b.keyfield
where a.s='s1' and b.s='s1'
但UPDATE表TABLE1,会死循环哦。
ON TABLE1
for update
AS
BEGIN
update TABLE1
set f ='s2'
from INSERTED i inner join deleted d on i.keyfield = d.keyfield
and isnull(i.f,'0') <> isnull(d.f,'0')
and i.keyfield = TABLE1.keyfield
and i.f = 'S1'
end
限制触发条件.inserted.f <> deleted.f and inserted.f = 's1' 第一次更新会触发,
后面不满足条件就不会再执行了,