当前位置: 首页 > 面试题库 >

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

丘友樵
2023-03-14
问题内容

我定义了一个MySQL表:

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

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

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


问题答案:

MySQL 完美支持独特的约束。

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

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

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



 类似资料:
  • 这是我的限制: 该查询证明约束实际上不起作用: 下面是输出: 为什么唯一性没有被强制执行?

  • 主要内容:在创建表时设置唯一约束,在修改表时添加唯一约束,删除唯一约束MySQL 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。 唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但

  • 问题内容: 我创建了它们,但是我忘记了它们是哪个。 我只想 让他们看。 删除表上的所有约束。 问题答案:

  • 问题内容: 我有一张桌子: 现在,我想使列的 用户,电子邮件,地址 唯一(在一起)。 如何在MySql中执行此操作? 当然,这个例子仅仅是……一个例子。因此,请不要担心语义。 问题答案:

  • 问题内容: 这个问题已经在这里有了答案 : 2列组合上的sql唯一约束 (3个答案) 6年前关闭。 我不确定我是否正确表达了这个问题,所以我将尝试更长的解释。我有这种桌子: 我想将(a,b)对与(b,a)相同,并禁止插入重复项。如果PostgreSQL有数据类型,我可以这样声明表: 但是事实并非如此,那么最好的方法是什么? 问题答案:

  • CREATE语句中有以下约束: 这些用于删除约束的命令在MySQL中有效,但在H2中无效: 我需要一个在MySQL和H2中都能工作的命令(MySQL在真实环境中使用,H2在单元测试中使用)