sql – 跨多列排列的唯一postgres约束

给出Postgres数据库中的以下三列:第一,第二,第三;如何创建约束以使排列是唯一的?

例如.如果db中存在(‘foo’,’bar’,’shiz’),(‘bar’,’shiz’,’foo’)将被排除为非唯一.

解决方法

您可以使用hstore创建唯一索引:
CREATE UNIQUE INDEX hidx ON test USING BTREE (hstore(ARRAY[a,b,c],ARRAY[a,c]));

Fiddle

UPDATE

其实

CREATE UNIQUE INDEX hidx ON test USING BTREE (hstore(ARRAY[a,ARRAY[null,null,null]));

可能是一个更好的主意,因为它将工作相同,但应占用更少的空间(fiddle).

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...