在PostgreSQL中移动(更新)唯一列值

在PostgreSQL中移动(更新)唯一列值,第1张

在PostgreSQL中移动(更新)唯一列值

这确实有点令人困惑,因为在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如何)



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5620545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存