我定义了一个MySQL表:
File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....
我在这里读到MySQL不支持带有WHERE
条件的UNIQUE CONSTRAINT
.每customerId个我们就只有1个primaryImage = 1.
那么,我还能做些什么来实施这个约束呢?
我定义了一个MySQL表:
File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....
我在这里读到MySQL不支持带有WHERE
条件的UNIQUE CONSTRAINT
.每customerId个我们就只有1个primaryImage = 1.
那么,我还能做些什么来实施这个约束呢?
MySQL
完全支持唯一的约束.
不过,它不支持部分约束/索引,因此您需要用NULL
而不是0
来标记非主映像.
ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary
UNIQUE (customerId, isPrimaryImage)
您可以在isPrimaryImage
中插入任意数量的NULL
个值,但每个客户只能插入一个非空值.