嗨,我要在批处理过程中插入一堆数据。
最终输出应该是这样的表。观察到这里的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时,我不能保证该对的唯一性。如果我添加一个(“Richard”, NULL)
INDEX UNIQUE (name, address_id)
被认为是有效的
然后,如果我添加以下索引(发现它在谷歌搜索)
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
一些想法?
答案 0 :(得分:2)
此索引:
CREATE UNIQUE INDEX index_employers_on_name
ON employers(name)
WHERE address_id IS NULL ;
是部分索引,仅在address_id is null
时适用。每个NULL
仅允许一个name
值。 NULL
的非address_id
值对唯一性没有影响。
这似乎可以满足您的要求。