首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与截断语句的标准定义混淆

问与截断语句的标准定义混淆
EN

Stack Overflow用户
提问于 2016-06-29 05:20:07
回答 1查看 203关注 0票数 1

我有相当多的MSSQL server.We的经验--从MYSQL迁移到SQL server.I -我从来没有使用过MYSQL,所以我使用这个链接进行了一些不同的工作。

在页面的一个地方,下面是截断的定义。

SQL标准将截断表tablename语句(可选的特性ID F200,在SQL:2008中是新的)定义为:删除基表的所有行,而不导致任何触发操作。 不幸的是,标准没有指定 1.是否允许在涉及其他语句的事务中使用截断表 2.截断表是否意味着立即提交

对于SQL server,页面显示

遵循标准。 在MSSQL中,在涉及其他操作的事务中允许截断表,截断表并不意味着立即提交操作。

对于MYSQL,页面上写着

MySQL有一个截断表语句,但它并不总是遵循标准。 注意,在某些情况下,MySQL的截断命令实际上相当于一个无限制的DELETE命令(即:潜在的缓慢调用和触发器调用)。它的行为取决于表所管理的存储引擎。 当使用InnoDB (事务安全)表时,在涉及其他操作的事务中允许截断表,但是截断表意味着立即提交操作。

在SQLServer中,当您截断表时

1.操作可以最少记录。

2.只发生页释放并登录事务日志。

所以我的问题是:

1.标准中的以下措辞意味着什么,以及SQL server是如何遵循标准的,而MYSQL则不是。

截断表是否意味着立即提交?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-29 09:06:48

感谢Clifton_h的链接和这个问题的答案.

我的问题是,这句话意味着什么?

截断表是否意味着立即提交?

这一切归结为您是否可以回滚截断。

MYSQL和Oracle的:

您不能回滚截断,因为那些DBMS确实在事务后应用隐式提交,并且只有在出现错误时才会回滚,但是用户不能这样做。

用于SQL server的:

您可以回滚截断,因为没有应用立即提交。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38090931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档