在mysql表上创建复制约束

时间:2014-09-25 14:17:31

标签: mysql constraints

我有下表,我试图在表上创建一个约束,指出Ter_ID column可以重复Ter_ID但相应的Status不能相同在任何时候,如果有人试图将Ter_ID 100P StatusU更新为A,那么它就不会看到已经存在包含相应数据的行。

Ter_ID  Status  Address
100P    A   Road1
100P    U   Road2
200R    A   Road2

1 个答案:

答案 0 :(得分:1)

您需要使用两列添加组合的唯一索引。

示例:

ALTER TABLE `tablename` ADD UNIQUE `unique_index`(`Ter_ID`, `Status`);

根据您使用的MySQL引擎,了解不同的NULL行为。来自MySQL官方文档:

  

UNIQUE 索引创建一个约束,使索引中的所有值必须是不同的。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。除 BDB 存储引擎外,此约束不适用于 NULL 值。对于其他引擎, UNIQUE 索引允许包含 NULL 的列的多个 NULL 值。如果为 UNIQUE 索引中的列指定前缀值,则列值必须在前缀中唯一。