好的,我从很长一段时间以来就一直在研究SQL,并且编写了各种各样的复杂查询。但不知何故,我无法理解与几件事相关的基本概念。
我的问题是:
希望能找到简单准确的答案。互联网上的文章总是太令人困惑了。
发布于 2016-03-02 19:11:25
SQL代码(包括触发器中的代码)可以并行运行。然而,SQL使用锁来确保事务是原子的,并且使用一致的数据。如果两个update语句试图更新同一行数据,那么其中一个将首先获得该行上的锁--防止另一个事务暂时更新它。一旦完成,它将释放锁,然后第二个更新将被允许继续进行。如果需要让所有语句都保持为原子的,还可以有一个跨多个语句的事务。对于SELECT语句,它们通常可以忽略锁(取决于锁类型),因为它们只是在检索数据。两个SELECT语句不会互相踩在一起。
如果两个人同时按下你的理论按钮,其中一个将是“第一”,他们的交易将首先通过。也就是说,在这里使用触发器听起来是个很糟糕的主意,海事组织。如果医生从来不允许双倍预订,那么使用声明式RI来强制执行--而不是触发器(这会导致额外的、通常也是很大的开销)。
https://stackoverflow.com/questions/35755895
复制相似问题