我有下表,我试图在表上创建一个约束,指出Ter_ID column
可以重复Ter_ID
但相应的Status
不能相同在任何时候,如果有人试图将Ter_ID 100P Status
从U
更新为A
,那么它就不会看到已经存在包含相应数据的行。
Ter_ID Status Address
100P A Road1
100P U Road2
200R A Road2
答案 0 :(得分:1)
您需要使用两列添加组合的唯一索引。
示例:强>
ALTER TABLE `tablename` ADD UNIQUE `unique_index`(`Ter_ID`, `Status`);
根据您使用的MySQL引擎,了解不同的NULL行为。来自MySQL官方文档:
UNIQUE 索引创建一个约束,使索引中的所有值必须是不同的。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。除 BDB 存储引擎外,此约束不适用于 NULL 值。对于其他引擎, UNIQUE 索引允许包含 NULL 的列的多个 NULL 值。如果为 UNIQUE 索引中的列指定前缀值,则列值必须在前缀中唯一。