sql的备份执行与回滚

一般在java web项目开发的过程中,都会有sql的备份,执行与回滚操作,这里简单的介绍一下

 

sql备份

create table t_table140427 as select * from t_table;

[注]这个语句只对表的数据进行了备份,但是表的索引,约束等都没有进行备份

sql执行

sql执行,这里我要说的是,有些项目组会这样做

1,创建表,修改表的字段,修改表的约束等综合放在一个文件

2,表的初始化,更新,插入综合放在一个文件

3,创建函数,创建存储过程等放在一个文件里

但是有些项目却会把所有的sql综合成一个文件,这里需要考虑的问题就有

1,执行sql先后顺序的问题,必须考虑那些sql必须先执行,那些sql必须后执行,两者之间是否有关联关系

2,如果sql中存储过程,匿名块,函数等,如果是命令行执行的话,这必须在每一个单独的sql后单独一行加"/",否则将导致该sql编译失败-----Warning: Procedure created with compilation errors

sql的回滚

在项目组中,经常看到有人会在回滚表的时候,是这样写的

drop table t_table;
create table t_table as select * from t_table140427;

 

殊不知,这样回滚数据会把数据的约束,及与该表相关的触发器一起都drop掉,我曾经就这样干过,导致与那个表相关的触发器被干掉了,唉...

一般回滚操作使用

TRUNCATE TABLE t_table;
insert into t_table select * from t_table140427;
commit;

 

使用TRUNCATE 要注意的一点就是,如果t_table有外键约束,则需要想把这个外键disable掉,之后插入ok之后,在enable该外键

猜你喜欢

转载自tianshi-kco.iteye.com/blog/2055806