当前位置:   article > 正文

Postgresql 创建多列联合唯一索引时,其中一列可为空_postgresql将两列作为唯一索引

postgresql将两列作为唯一索引

有一个表,要创建两个列的唯一索引,但是有一列可以为空,这时要分两种情况建两个索引。如果只建一个,那么当parent_id为空时,即使name不同,也可以重复。

也就是说加索隐时也可以使用where条件。

  1. CREATE TABLE directories (
  2. id SERIAL NOT NULL PRIMARY KEY,
  3. parent_id INTEGER REFERENCES directories(id) ON DELETE CASCADE,
  4. name TEXT NOT NULL,
  5. key TEXT,
  6. created TIMESTAMPTZ NOT NULL,
  7. updated TIMESTAMPTZ NOT NULL
  8. );
  9. CREATE INDEX parent_id_on_directories ON directories(parent_id);
  10. CREATE UNIQUE INDEX parent_id_and_name_on_directories ON directories(parent_id, name) WHERE parent_id IS NOT NULL;
  11. CREATE UNIQUE INDEX name_on_root_directories ON directories(name) WHERE parent_id IS NULL;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/732846
推荐阅读
相关标签
  

闽ICP备14008679号