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该外键

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值