【发布时间】:2018-11-17 13:47:29
【问题描述】:
您好,我正在批处理中插入一堆数据。
最终的输出应该是这样的表格。注意这里Name, Address_id 对是唯一的。 Address_id 可以为 NULL,但对于给定的对 Name, Address_id 只能为一次
Name address_id
——— —————
“Richard” 1
“Richard” 2
“Richard” NULL
“Richard 3
“James” 1
“James” 2
“James” NULL
“James” 3
但是,当 address_id 为 NULL 时,我无法保证该对的唯一性。如果我添加 INDEX UNIQUE (name, address_id),另一对 (“Richard”, NULL) 将被视为有效
然后,如果我添加以下索引(谷歌搜索发现)
CREATE UNIQUE INDEX index_employers_on_name_and_address_id
ON employers(name, address_id)
WHERE address_id IS NOT NULL
CREATE UNIQUE INDEX index_employers_on_name
ON employers(name)
WHERE address_id IS NULL
不允许所有 (<NAME>, NULL) 对,因为已经存在唯一的 NAME
一些想法?
【问题讨论】:
-
我不明白这个问题。最后两个索引是否符合您的要求?他们似乎。
标签: sql postgresql psql