随笔-94  评论-56  文章-3  trackbacks-0
相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据 
不同点: 
1. truncate和 delete只删除数据不删除表的结构(定义) 
     drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. 
    truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 
3.速度,一般来说: drop> truncate > delete
4.想删除表,当然用drop。想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete. 
posted on 2009-07-17 15:26 小言身寸 阅读(632) 评论(0)  编辑  收藏 所属分类: 数据库/SQL语言

只有注册用户登录后才能发表评论。


网站导航: