赞
踩
有一个表,要创建两个列的唯一索引,但是有一列可以为空,这时要分两种情况建两个索引。如果只建一个,那么当parent_id为空时,即使name不同,也可以重复。
也就是说加索隐时也可以使用where条件。
- CREATE TABLE directories (
- id SERIAL NOT NULL PRIMARY KEY,
- parent_id INTEGER REFERENCES directories(id) ON DELETE CASCADE,
- name TEXT NOT NULL,
- key TEXT,
- created TIMESTAMPTZ NOT NULL,
- updated TIMESTAMPTZ NOT NULL
- );
- CREATE INDEX parent_id_on_directories ON directories(parent_id);
- CREATE UNIQUE INDEX parent_id_and_name_on_directories ON directories(parent_id, name) WHERE parent_id IS NOT NULL;
- CREATE UNIQUE INDEX name_on_root_directories ON directories(name) WHERE parent_id IS NULL;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。