数据库触发器或提交级别约束

时间:2018-07-11 14:12:06

标签: database triggers db2 constraints relational-database

我想知道是否有某种触发条件会在提交级别触发。

这里是一个简单的例子,可以详细说明我的问题。我有一个名为T的表,并且有两个整数列A(这是主键)和B。我想在每个事务列B的末尾仅在一行中包含1,在其余各行中包含零。该表已包含行并且与所述规则一致(例如A = 5的行具有B = 1,其余行的所有B均为零)

然后我想在一次交易中对以下语句进行计算

  • 插入T(A,B)值(8,1)
  • 更新T集B = 0,其中A = 5

语句执行的顺序无关紧要。 如果我在语句级别上有一个触发器,该触发器将迫使表在B列上的表正好具有1行,则第一条语句将失败,因为我在B列上添加了带有q的第二行。 ,更新语句将再次失败,因为它使表在B列上没有一行带有1的行

如果有一个触发器(或约束)仅在事务提交结束时才“触发”,则事务将无缺陷地提交,因为在事务结束时,表将继续仅包含一行B列上的值1(与交易开始时的行不同,但仍然只有一个)

我正在研究的用例将应用于IBM DB2。

1 个答案:

答案 0 :(得分:0)

您的问题的目的对我来说还不清楚。

如果您了解事务的概念,那么您的更新和插入(都在单个事务中)就可以完成任务。

如果其他应用程序选择具有CS隔离级别或更高隔离级别的表,它们将起作用并且不会使表不一致。