赞
踩
您可以在纯SQL中执行此操作.除了你拥有的那个之外,创建一个
partial unique index:
CREATE UNIQUE INDEX ab_c_null_idx ON my_table (id_A,id_B) WHERE id_C IS NULL;
这样您就可以在表格中输入(a,b,c):
(1,1)
(1,2)
(1,NULL)
但这些都不是第二次.
或者使用两个部分UNIQUE索引,没有完整的索引(或约束).最佳解决方案取决于您的要求的详细信息.相比:
旁白
所以:
CREATE TABLE my_table (
my_table_id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY -- for pg 10+
-- my_table_id bigserial PRIMARY KEY -- for pg 9.6 or older,id_a int8 NOT NULL,id_b int8 NOT NULL,id_c int8,CONSTRAINT u_constraint UNIQUE (id_a,id_b,id_c)
);
如果在表的生命周期内(包括废弃行和已删除行)预计不超过20亿行(> 2147483647),请考虑整数(4个字节)而不是bigint(8个字节).
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。