读书人

请教这个需求怎么解决.多谢各位

发布时间: 2012-03-16 16:34:56 作者: rapoo

请问这个需求如何解决.谢谢各位!
要创建触发器的表结构:
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

....

下面可以比较哪一列更新前后的值来判断是否要更新本列

读书人网 >J2SE开发

热点推荐