这确实有点令人困惑,因为在DML *** 作期间,所有其他约束都是在语句级别上评估的,仅PK /唯一约束是在每行级别上评估的。
但是,您可以通过将主键约束声明为可延迟来解决此问题:
create table tbl_test ( testkey INTEGER, constraint pk_tbl_test primary key (testkey) deferrable initially immediate);insert into tbl_test values (1), (2);set constraints all deferred;update tbl_test set testkey = testkey +1;
延迟约束确实有一些开销,因此可以通过将其定义为
initially immediate将开销最小化来进行定义。您可以使用在需要时推迟约束评估
setconstraint。
但是,真正的问题是:为什么要对主键值执行此 *** 作?PK值毫无意义,因此似乎没有必要增加所有值(无论使用的是DBMS如何)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)