一尘不染

如何在MySQL中强制执行唯一约束?

mysql

我定义了一个MySQL表:

File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....

我在这里阅读到MySQL不支持UNIQUE CONSTRAINTWHERE条件的。对于每个 customerId, 我们只有一个
primaryImage = 1

那么我还能采取什么措施来强制执行此约束?


阅读 250

收藏
2020-05-17

共1个答案

一尘不染

MySQL 完美支持独特的约束。

但是,它不支持部分约束/索引,因此您需要使用NULL而不是标记非主图像0

ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary 
UNIQUE (customerId, isPrimaryImage)

您可以将任意数量的NULL值插入到isPrimaryImage每个客户中,但只能插入一个非空值。

2020-05-17