postgresql数据库,建立表中两个字段的唯一性约束!当其中一个是空值的话!约束就不起作用了!求!

qq825711424 2014-08-21 06:30:59
如:一个User表,把pid和code两个字段建立唯一性约束,数据库已经有一行数据是pid为空,code的值为"TEST"!现在的问题是当再插入一行数据,pid也为空,code也是"TEST",那唯一性约束就约束不了!这是什么情况?网上找了很久都没有解决方法!谢谢!
...全文
983 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq825711424 2014-08-22
  • 打赏
  • 举报
回复
引用 1 楼 trainee 的回复:
是这样的: Postgresql 认为null都是不相等的,多栏键值的唯一性只有全部是非NULL的情况下才可进行比较。 Null values are not considered equal. A multicolumn unique index will only reject cases where all indexed columns are equal in multiple rows. 好在postgresql有表达式索引:

create unique index xxx on user ((coalesce(pid,-1)||code))
注意,要两个括号
真是太感谢了!完美解决了我的问题!
trainee 2014-08-21
  • 打赏
  • 举报
回复
是这样的: Postgresql 认为null都是不相等的,多栏键值的唯一性只有全部是非NULL的情况下才可进行比较。 Null values are not considered equal. A multicolumn unique index will only reject cases where all indexed columns are equal in multiple rows. 好在postgresql有表达式索引:

create unique index xxx on user ((coalesce(pid,-1)||code))
注意,要两个括号

974

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧