1

是否可以在 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 中以某种方式检查指定值?

4

2 回答 2

2

不,使用约束是不可能的。您可以在上添加唯一约束name,但这会阻止所有重复条目,而不仅仅是“peter”。话虽如此,您必须自己进行此额外检查。

于 2012-04-04T09:29:32.730 回答
0

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

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

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

于 2012-04-04T09:27:22.970 回答