truncate table 语句语句会回滚吗

MySQL DELETE语句和TRUNCATE TABLE语句的区别_百度知道
MySQL DELETE语句和TRUNCATE TABLE语句的区别
提问者采纳
一种是truncate ,但truncate删除后不记录mysql日志。 不带where参数的delete语句可以删除mysql表中所有内容空mysqll表内容常见的有两种方法,使用truncate table也可以清空mysql表中所有内容,不可以恢复数据。效率上truncate比delete快:一种delete
来自团队:
其他类似问题
为您推荐:
truncate的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分8阅读权限1帖子精华可用积分8 信誉积分200 专家积分0 在线时间0 小时注册时间最后登录
帖子主题精华可用积分8 信誉积分200 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
到底sql server 中truncate 是不是真的可以回滚呢?
我在好多资料上看的是不可以回滚?
请长期从事 SQL Server 开发高手指点一下吧!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID8591181空间积分0 积分2519阅读权限10帖子精华可用积分2519 信誉积分102 专家积分0 在线时间0 小时注册时间最后登录
白手起家, 积分 2519, 距离下一级还需 -2319 积分
帖子主题精华可用积分2519 信誉积分102 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
TRUNCATE TABLE操作不写在日志中,不可回滚的
UID8984272空间积分0 积分394阅读权限20帖子精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
稍有积蓄, 积分 394, 距离下一级还需 106 积分
帖子主题精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
论坛徽章:0
exec master..xp_cmdshell \'del D:\\study.bak\'
exec master..xp_cmdshell \'del D:\\study_log.bak\'
backup database study to disk=\'D:\\study.bak\'
if object_id(\'test\') is not null
drop table test
create table test(id int)
insert into test select 1
& && & union all select 2
select count(1) as c from test
c& && && &&&
-----------
declare @a datetime
select&&@a=getdate()&&--@a 保存恢复的时间点&&
select @a& & -- 10:45:31.357
truncate table test
select count(1) as c from test
c& && && &&&
-----------
backup log study to disk=\'D:\\study_log.bak\' with format&&--备份日志
use master
restore database study from disk=\'D:\\study.bak\' with norecovery
restore log study from disk=\'D:\\study_log.bak\' with recovery,stopat=\' 10:45:31\'
select count(1) as c from test
c& && && &&&
-----------
我的实验好象是得出truncate是写日志的
UID8591181空间积分0 积分2519阅读权限10帖子精华可用积分2519 信誉积分102 专家积分0 在线时间0 小时注册时间最后登录
白手起家, 积分 2519, 距离下一级还需 -2319 积分
帖子主题精华可用积分2519 信誉积分102 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
LS的你可以查看下联机帮助中的解释,truncate table是按页的不是按行执行的
UID8984272空间积分0 积分394阅读权限20帖子精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
稍有积蓄, 积分 394, 距离下一级还需 106 积分
帖子主题精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
论坛徽章:0
但是如果truncate不写日志的话,不可能找到truncate的记录,我实验的结果却是找回了那两条记录啊
UID8642048空间积分0 积分4阅读权限10帖子精华可用积分4 信誉积分116 专家积分0 在线时间15 小时注册时间最后登录
白手起家, 积分 4, 距离下一级还需 196 积分
帖子主题精华可用积分4 信誉积分116 专家积分0 在线时间15 小时注册时间最后登录
论坛徽章:0
我实验了一下,比如:
create table a (aa varchar(2));
insert into a values (\'a\');
begin tran
rollback tran
这样执行完的话,A里面的数据还在的呀。
这样算是回滚吗?
UID53005空间积分0 积分1094阅读权限10帖子精华可用积分1094 信誉积分106 专家积分0 在线时间27 小时注册时间最后登录
白手起家, 积分 1094, 距离下一级还需 -894 积分
帖子主题精华可用积分1094 信誉积分106 专家积分0 在线时间27 小时注册时间最后登录
论坛徽章:0
可以回滚。
楼上就是例子。
UID53005空间积分0 积分1094阅读权限10帖子精华可用积分1094 信誉积分106 专家积分0 在线时间27 小时注册时间最后登录
白手起家, 积分 1094, 距离下一级还需 -894 积分
帖子主题精华可用积分1094 信誉积分106 专家积分0 在线时间27 小时注册时间最后登录
论坛徽章:0
但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。
TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。
UID8984272空间积分0 积分394阅读权限20帖子精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
稍有积蓄, 积分 394, 距离下一级还需 106 积分
帖子主题精华可用积分394 信誉积分428 专家积分0 在线时间63 小时注册时间最后登录
论坛徽章:0
我觉得9楼的那个例子不能说明问题
UID空间积分0 积分8阅读权限1帖子精华可用积分8 信誉积分200 专家积分0 在线时间0 小时注册时间最后登录
帖子主题精华可用积分8 信誉积分200 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
这样看来又可以回滚了,还有待进一步研究!truncate table语句会回滚吗_百度知道
truncate table语句会回滚吗
提问者采纳
区别主要两个1。 Truncate 是整体删除, delete是逐条删除2. truncate不写服务器log,delete写服务器log,这就是为什么truncate要快过delete 所以,影响有:1。 truncate 快2。 truncate不激活 trigger3。 trunc珐讥粹客诔九达循惮末ate 重置 Identity
来自团队:
其他类似问题
为您推荐:
truncate的相关知识
其他1条回答
不记录日志,可以用事务回滚.
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁SQL Server 的Truncate命令可以回滚吗?
[问题点数:100分,结帖人frankey_fung]
SQL Server 的Truncate命令可以回滚吗?
[问题点数:100分,结帖人frankey_fung]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2015年4月优秀版主2014年11月论坛优秀版主
2014年4月 荣获微软MVP称号2013年4月 荣获微软MVP称号2009年1月 荣获微软MVP称号2012年4月 荣获微软MVP称号2011年4月 荣获微软MVP称号2010年4月 荣获微软MVP称号
2005年 总版技术专家分年内排行榜第四
2006年11月 总版技术专家分月排行榜第一2006年3月 总版技术专家分月排行榜第一2006年2月 总版技术专家分月排行榜第一2006年1月 总版技术专家分月排行榜第一2005年12月 总版技术专家分月排行榜第一
2010年7月 荣获微软MVP称号
2008年11月 MS-SQL Server大版内专家分月排行榜第一2008年10月 MS-SQL Server大版内专家分月排行榜第一
2010年7月 荣获微软MVP称号
2008年11月 MS-SQL Server大版内专家分月排行榜第一2008年10月 MS-SQL Server大版内专家分月排行榜第一
2005年 总版技术专家分年内排行榜第四
2006年11月 总版技术专家分月排行榜第一2006年3月 总版技术专家分月排行榜第一2006年2月 总版技术专家分月排行榜第一2006年1月 总版技术专家分月排行榜第一2005年12月 总版技术专家分月排行榜第一
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
本帖子已过去太久远了,不再提供回复功能。首先讲一下,truncate命令:
语法:TRUNCATE &TABLE &
表格里的数据被清空,存储空间被释放。
运行后会自动提交,包括之前其它未提交的会话,因而一旦清空无法回退。
只有表格的创建者或者其他拥有删除任意表格权限的用户(如DBA)才能清空表格。
TRUNCATE &TABLE &dept30;
Table truncated.
------------------------------------------------------------------------------------------------------------
下面讲一下truncate命令和delete的区别:
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。&
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。&
4、TRUNCATE不能触发任何DELETE触发器。&
5、不能授予任何人清空他人的表的权限。&
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。&
7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE ST
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
===========================================================
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。
--------------------------------------------------------------------------------------
以上只是介绍一下两个命令的用法,下面说一下我的推荐用法,truncate命令速度快,占用资源少,如果你能确定当前表里的数据完全没有用的话可以使用此命令,方面快捷,如果数据或许有用,那你最好做好备份,否则一旦使用此命令,就悔不当初了,当然delete命令还是有好处的,如果不能保证此后的数据有不有用,但是当前不知道,或者干脆就是误删了,那么使用rollback命令直接回滚,当然rollback命令可以添加回滚点,定位回滚,恢复数据比较方便,所以说对与初学者,楼主强烈建议大家删除数据时使用delete命令,麻烦事麻烦了点,但是保险一点,这是我的教训啊,误用truncate命令清空了一个表,还好这个表是无关紧要的,否则我就只有以谢天下了。当然,非常强烈的建议是,做任何操作前,对于有用的数据都要事先备份,不管用不用得着,有备无患。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:99016次
积分:1230
积分:1230
排名:千里之外
转载:111篇
评论:15条
(1)(2)(1)(2)(1)(1)(1)(1)(6)(9)(2)(4)(12)(15)(1)(18)(6)(12)(3)(5)(4)(12)}

我要回帖

更多关于 truncate table 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信