问题是我将约束“unique”设置为现有表“info”的“hobby”列。当我使用以下语法添加一个新条目时:
mysql> update info
-> set hobby="HACKING"
-> where name = "TAYLOR";
Query OK, 1 row affected (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 0
添加时没有任何错误。当我已经在“爱好”上添加了“独特”约束时,这怎么可能呢?以下是表格的所有详细信息:
mysql> select * from info;
+-----+-----------+---------+-------+-----------+
| id | name | address | marks | hobby |
+-----+-----------+---------+-------+-----------+
| 501 | JAMES | DELHI | 100 | GOLF |
| 502 | TAYLOR | MUMBAI | 58 | HACKING |
| 503 | MARTIN | GOA | 98 | CHESS |
| 504 | ROBIN | HARYANA | 68 | LUDO |
| 505 | VIRAT | UP | 48 | CRICKET |
| 506 | GAYLE | MP | 58 | cricket |
| 507 | PRINCE | KERALA | 63 | ADVENTURE |
| 508 | ANONYMOUS | USA | 72 | HACKING
|
+-----+-----------+---------+-------+-----------+
8 rows in set (0.00 sec)
mysql> show create table info;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| info | CREATE TABLE `info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`address` varchar(64) NOT NULL,
`marks` int(65) unsigned DEFAULT NULL,
`hobby` varchar(25) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`,`hobby`)
) ENGINE=InnoDB AUTO_INCREMENT=509 DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
你可以看到“匿名”,“泰勒”和“维拉特”,“盖尔”有相同的爱好“黑客”和“板球”分别。怎么回事?
1条答案
按热度按时间8yparm6h1#
假设您需要id上的主键,但也需要hobby和name的唯一值,您可以对hobby和name列使用唯一约束,例如: