如何在MySQL中实施唯一约束?
我定义了一个MySQL表:如何在MySQL中实施唯一约束?,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我定义了一个MySQL表: 文件 -------------------------- ID int(11)PK 名称varchar(100) 客户ID int(11)FK iPrimaryImage tinyint(1) .... 我在这里读到,MySQL不支持带有WHERE条件的UNIQUE约束。对于每个customerId,我们只有一个primaryImage=1 那么,我还可以做些什么来实施这个约束呢?MySQL完全支持唯一的约束 但是,它不支持部分约束/索引,因此您需要使用NULL
文件
--------------------------
ID int(11)PK
名称varchar(100)
客户ID int(11)FK
iPrimaryImage tinyint(1)
....
我在这里读到,MySQL不支持带有
WHERE
条件的UNIQUE约束。对于每个customerId,我们只有一个primaryImage=1
那么,我还可以做些什么来实施这个约束呢?MySQL
完全支持唯一的约束
但是,它不支持部分约束/索引,因此您需要使用NULL
而不是0
标记非主映像
ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary
UNIQUE (customerId, isPrimaryImage)
您可以在isPrimaryImage
中插入任意数量的NULL
值,但每个客户只能插入一个非NULL值。请参阅:即使MySQL支持唯一约束,您也不能在此处使用一个(假设每个客户有多个次映像),由于您将有几个元组具有相同的customerID和isPrimaryImage=0(但您可以使用NULL而不是0)。表设计已关闭,您无法使用这种布局强制执行所需内容。我同意Michael J.V的观点。我不想按您的方式执行此操作,而是放弃isPrimaryImage列并添加customerPrimaryImage表(具有CustomerID、ImageID和CustomerID上的唯一约束)。@quassnoi==casse noix??