我定义了一个MySQL表:
File -------------------------- ID int(11) PK name varchar(100) customerId int(11) FK isPrimaryImage tinyint(1) ....
我在这里阅读到MySQL不支持UNIQUE CONSTRAINT带WHERE条件的。对于每个 customerId, 我们只有一个 primaryImage = 1 。
UNIQUE CONSTRAINT
WHERE
那么我还能采取什么措施来强制执行此约束?
MySQL 完美支持独特的约束。
MySQL
但是,它不支持部分约束/索引,因此您需要使用NULL而不是标记非主图像0。
NULL
0
ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary UNIQUE (customerId, isPrimaryImage)
您可以将任意数量的NULL值插入到isPrimaryImage每个客户中,但只能插入一个非空值。
isPrimaryImage