Ane*_*lou 4 sql postgresql indexing check-constraints unique-constraint
我有一张桌子:
CREATE TABLE dbo."TransportInteraction"
(
"Id" bigint NOT NULL DEFAULT nextval('dbo."TransportInteraction_Id_seq"'::regclass),
"Message" character varying(256),
"TransportActionId" integer NOT NULL,
"TimeCreated" timestamp without time zone NOT NULL,
"TimeInserted" timestamp without time zone NOT NULL,
"TaskId" bigint
)
Run Code Online (Sandbox Code Playgroud)
通常,此表是对任务的映射操作.TransportActionId是一种integer定义行动的类型.某些操作类型对于每个任务必须是唯一的,而有些则不是.
所以我需要一个类型约束:
UNIQUE ("TaskId", "TransportActionId")适用于所有动作TransportActionId != (2||3 || 4).
所以所有行动除了那些ActionId=2,3 or 4.
有任何想法吗?
使用部分唯一索引.喜欢:
CREATE UNIQUE INDEX transint_partial_uni_idx
ON dbo."TransportInteraction" ("TaskId", "TransportActionId")
WHERE TransportActionId NOT IN (2,3,4);
Run Code Online (Sandbox Code Playgroud)
具有更多详细信息的紧密相关答案:
使用空列创建唯一约束表中的
唯一组合
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |