是否可以在MySQL中为VARCHAR列设置约束?

时间:2012-04-04 09:17:17

标签: mysql constraints varchar

是否可以在MySQL中为VARCHAR列设置约束?

我不允许超过一行特定值。

   ______________
  |    MyTable   |
   --------------
  | pk id   INT  |
  | name VARCHAR |

如果我现在插入两行名称相同的“peter”,我想抛出一个错误。因此,约束应仅检查是否已存储“peter”。但是多行其他值必须有效。

INSERT INTO MyTable VALUES (1, "peter");
INSERT INTO MyTable VALUES (2, "peter"); // This should fail
INSERT INTO MyTable VALUES (3, "steven"); 
INSERT INTO MyTable VALUES (4, "steven"); // Shall succeed

在MySQL中是否可以以某种方式检查指定的值?

2 个答案:

答案 0 :(得分:2)

不,那不可能使用约束。您可以在name上添加unique constraint,但这会预示所有重复的信息,而不仅仅是“彼得”。话虽如此,你必须自己做额外的检查。

答案 1 :(得分:0)

将列设置为UNIQUE。尝试插入重复值的MySQL查询将失败。

INSERT: insert into <table> (<columns>,unique(<unique column>));

更新: alter table <table> add unique(<unique column>));