如何在Postgres中的列上放置唯一约束?

Vin*_*yak 4 postgresql ddl constraints

这是我的数据库表

CREATE TABLE cart (
  id           UUID      NOT NULL PRIMARY KEY,
  shop_user_id UUID UNIQUE
);
Run Code Online (Sandbox Code Playgroud)

当我尝试删除UNIQUEshop_user_id我的约束42601 error

这是我用来删除唯一约束的查询

ALTER TABLE cart DROP UNIQUE shop_user_id;
Run Code Online (Sandbox Code Playgroud)

小智 12

要查找唯一约束的名称,请运行

SELECT conname
FROM pg_constraint
WHERE conrelid = 'cart'::regclass
  AND contype = 'u';
Run Code Online (Sandbox Code Playgroud)

然后按如下所示删除约束:

ALTER TABLE cart DROP CONSTRAINT cart_shop_user_id_key;
Run Code Online (Sandbox Code Playgroud)

替换cart_shop_user_id_key为从第一个查询中获得的任何内容。