6 个解决方案
#1
建议参照oracle语法去实现,只有这样才能提高自己的能力和水平。
#2
就是用oracle如何实现呢?
#3
SQL>
SQL> create table test(id int , name varchar(10));
Table created
SQL> create table test_bak(id int , name varchar(10));
Table created
SQL> create trigger test_up
2 before update on test
3 for each row
4 begin
5 insert into test_bak(id , name)values(:old.id , :old.name);
6 end ;
7 /
Trigger created
SQL> begin
2 insert into test(id,name) values(1,'lisi');
3 insert into test(id,name) values(2,'zhang');
4 commit ;
5 end;
6 /
PL/SQL procedure successfully completed
SQL> update test set name = 'zhangsan' where id = 2 ;
1 row updated
SQL> select * from test ;
ID NAME
--------------------------------------- ----------
1 lisi
2 zhangsan
SQL> select * from test_bak ;
ID NAME
--------------------------------------- ----------
2 zhang
SQL> drop table test purge ;
Table dropped
SQL> drop table test_bak purge ;
Table dropped
SQL>
#4
非常谢谢,那如果test_bak中再增加一个字段modify_time来记录表test每次数据修改的时间应该怎么做呢
#5
人家SQL都给你写出来了。。
增加个时间你就在建表的时候增加个时间字段
触发器里再把当前时间插入进去就OK了
create table test_bak(id int , name varchar(10),mod_date date);
insert into test_bak(id , name)values(:old.id , :old.name, sysdate);
增加个时间你就在建表的时候增加个时间字段
触发器里再把当前时间插入进去就OK了
create table test_bak(id int , name varchar(10),mod_date date);
insert into test_bak(id , name)values(:old.id , :old.name, sysdate);
#6
非常感谢 之前是表受其他约束了
#1
建议参照oracle语法去实现,只有这样才能提高自己的能力和水平。
#2
就是用oracle如何实现呢?
#3
SQL>
SQL> create table test(id int , name varchar(10));
Table created
SQL> create table test_bak(id int , name varchar(10));
Table created
SQL> create trigger test_up
2 before update on test
3 for each row
4 begin
5 insert into test_bak(id , name)values(:old.id , :old.name);
6 end ;
7 /
Trigger created
SQL> begin
2 insert into test(id,name) values(1,'lisi');
3 insert into test(id,name) values(2,'zhang');
4 commit ;
5 end;
6 /
PL/SQL procedure successfully completed
SQL> update test set name = 'zhangsan' where id = 2 ;
1 row updated
SQL> select * from test ;
ID NAME
--------------------------------------- ----------
1 lisi
2 zhangsan
SQL> select * from test_bak ;
ID NAME
--------------------------------------- ----------
2 zhang
SQL> drop table test purge ;
Table dropped
SQL> drop table test_bak purge ;
Table dropped
SQL>
#4
非常谢谢,那如果test_bak中再增加一个字段modify_time来记录表test每次数据修改的时间应该怎么做呢
#5
人家SQL都给你写出来了。。
增加个时间你就在建表的时候增加个时间字段
触发器里再把当前时间插入进去就OK了
create table test_bak(id int , name varchar(10),mod_date date);
insert into test_bak(id , name)values(:old.id , :old.name, sysdate);
增加个时间你就在建表的时候增加个时间字段
触发器里再把当前时间插入进去就OK了
create table test_bak(id int , name varchar(10),mod_date date);
insert into test_bak(id , name)values(:old.id , :old.name, sysdate);
#6
非常感谢 之前是表受其他约束了