当前位置: 首页 > 面试题库 >

只要尚未提交,SQL Server是否在事务中允许违反约束的行为?

苏俊友
2023-03-14
问题内容

只要事务尚未提交,SQL Server是否允许事务中的约束违反(即延迟约束)?

我有一个正在运行的,未提交的事务,并且在该事务正在运行时,我将更改我的数据,使其违反某些约束(例如,具有重复的主键)。当我提交事务时,数据将处于一致的有效状态。在SQL中,特别是在MS
SQL Server中,通常是否允许这样做?


问题答案:

不,对不起 SQL Server不允许事务中的延迟约束。它在SQL Server 6.5中存在,但在SQL Server 2000中已删除:

SET DISABLE_DEF_CNST_CHK ON

每个单独的语句都必须是一致的,等等,无论它是否在事务中

某些RDBMS确实允许这样做(例如Oracle,Postgres,Interbase)

连接

2006年创建了一个Microsoft
Connect请求
,要求该功能:

推迟外键约束检查直到事务提交的选项

在各种“鸡与蛋”场景中,希望将对参照完整性约束的检查推迟到事务的提交时间之前。

允许推迟引用完整性约束检查,直到在事务上提交时间为止(作为选择)。建议在BEGIN TRANSACTION上提供一个选项来指定此选项。

微软的最后回应是十年前:

由Sameer [MSFT]发表于2006年10月13日,下午1:35

你好格雷格,

感谢您的反馈。我们已经意识到了这一点,并希望将其发布。

Sameer Verkhedkar
SQL引擎
[MSFT]

微软所说的 “走开”

该功能是在1992年7月使用SQL-92定义的。示例语法为:

BEGIN TRANSACTION
   SET CONSTRAINTS ALL DEFERRED --applies only to the current transaction

   INSERT Customers ...
   INSERT Orders ...
   UPDATE Customers ... --add the thing we were missing

COMMIT TRANSACTION


 类似资料:
  • 我正在使用Hibernate 4.0最终版和ojdbc6来开发我的网络应用程序。一切都好,除了当我试图插入一个新的父母/孩子的关系。首先,这些是实体: 让我们看看这两个场景: 员工已存在,我尝试向其添加新地址-- 这是事务处理程序: 你可以想象,2.b的案子是我关心的。我已经调试了事务,这是我调用保存()方法(在DAO类中)时得到的: 会议结束了。saveOrUpdate(employee)方法成

  • 问题内容: 我正在使用Hibernate 4.0 Final和ojdbc6开发我的Web应用程序。一切正常,除非我尝试插入新的父/子关系。首先,这些是实体: 让我们看看这两种情况: 一名员工已经存在,我尝试向其添加新地址->正常工作。 员工不存在,我尝试创建一个新员工。两种不同的情况: a)我只插入一名雇员(无地址)->可以正常工作。 b)我插入并添加了employee及其地址-> 失败 。我必须

  • 问题内容: MySQL是否允许使用嵌套事务? 问题答案: 支持。 您可以执行以下操作:

  • 我试图理解TopCoder上的问题: 它特别指定 数组的长度为n. 每个元素都是介于1和k之间的整数,包括整数。 每当A和B是数组的两个连续元素(按此顺序)时,我们有(A 我的问题是关于第一个示例的第三个约束: 答案不应该是4吗?数组{2,1}发生了什么?有3个数组可以按照上述约束生成,但是thre也是可以生成的第四个数组,即{2,1}。问题的任何地方都写着,我们只能有唯一的数字组合。为什么我们不

  • 问题内容: 什么是防止在创建约束约束之前检查约束的最佳机制?实体的修改? 假设“用户”实体具有“ loginid”作为唯一约束,明智的做法是在创建或修改之前检查是否已存在具有该loginid名称的用户条目。 要么 您是否要让数据库抛出ConstraintViolationException并在UI层中适当地处理此消息。在jboss接缝框架中应在哪里执行此类检查。 注意:目前,没有对seam-gen

  • 我试图在WAS8.5上部署Web服务,我在启动应用程序时在服务器日志中出现以下异常。此服务以前在WAS7上运行。 我已经将类加载配置更改为parent last并进行了测试,但运气不好。我有泽西服务器1.9。1在我的大会中。 有人知道这件事吗? 提前谢谢。 [3/7/14 6:42:30:854 CST]00000067 FFDCW公司。国际商用机器公司ws。ffdc。impl。FfdcProvi