我有一张table employee
这个 employee
表中几乎没有字段,例如
`salary`
`name`
`age`
`designation`
其中只有 designation
可为空。我不能使它不为null,因为它正被现有代码使用。
是否可以为上面提到的所有列创建一个组合的唯一约束??
当我尝试创建新的唯一约束时。
ALTER TABLE `employee` ADD CONSTRAINT `employee_constraint`
UNIQUE key (`salary`,`name`, `age`, `designation`);
它成功地创建了约束,但是当我尝试插入这些记录的重复组合时,它成功地插入了。有没有更好的方法来创建约束并放弃这些列的重复组合?
1条答案
按热度按时间v440hwme1#
通常mysql允许在
UNIQUE
约束。更多信息:mysql是否忽略唯一约束上的空值?可以使用生成的列只允许一个
NULL
价值:dbfiddle演示
如果您使用的是mariadb 10.3.3,那么可以将虚拟列标记为
INVISIBLE
.列可以被赋予不可见属性。这些列将不会在select*语句的结果中列出,也不需要在insert语句中为它们赋值,除非insert显式地按名称提及它们。