请问这个需求如何解决.谢谢各位!
要创建触发器的表结构:
create table test (
aaa int,
bbb varchar(20),
ccc varchar(20),
ddd varchar(20),
eee varchar(20)
constraint test_PR_ PRIMARY KEY(aaa)
)
对上表进行字段触发,如何动态产生更新触发器
create trigger test_update
on test
for update
as
if update(aaa)
begin
select 主键旧值=D.aaa FROM deleted D
insert into A_TRIGER(表名,主键旧值,字段名) values( 'test ',主键旧值,aaa)
end
else if update(bbb )
begin
select 主键旧值=D.aaa FROM deleted D
insert into A_TRIGER(表名,主键旧值,字段名) values( 'test ',主键旧值,bbb)
end
else if update(ccc)
begin
select 主键旧值=D.aaa FROM deleted D
insert into A_TRIGER(表名,主键旧值,字段名) values( 'test ',主键旧值,ccc)
end
else if update(ddd)
begin
select 主键旧值=D.aaa FROM deleted D
insert into A_TRIGER(表名,主键旧值,字段名) values( 'test ',主键旧值,ddd)
end
else if update(eee)
begin
select 主键旧值=D.aaa as 主键旧值 FROM deleted D
insert into A_TRIGER(表名,主键旧值,字段名) values( 'test ',主键旧值,eee)
end
end
请问这个动态的sql语句如何实现.谢谢各位了.谢谢.
------解决方案--------------------是Oracle么?
如果是更新的话,可以用
create trigger test_update
before update on test for each row
....
下面可以比较哪一列更新前后的值来判断是否要更新本列