CREATE TABLE `table_name` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `data` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_data` (`data`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上是创建一张名为table_name
的表,其中包含一个自增的主键id
和一个唯一的列data
。在UNIQUE KEY
约束中定义了一个名为unique_data
的唯一索引。
当大家试图向这张表中插入一条已经存在data
值的记录时,MySQL会抛出如下错误:
ERROR 1062 (23000): Duplicate entry 'data_value' for key 'unique_data'
这意味着大家无法向unique_data
索引中插入相同的数据值,因为这个约束确保了数据的唯一性。
值得一提的是,在MySQL中,大家还可以使用ON DUPLICATE KEY UPDATE
语句来避免插入相同的数据。如果插入的数据已经存在,则会更新原有数据,而不是插入一条新的记录。这里有一段实例代码:
INSERT INTO `table_name` (`data`) VALUES ('data_value') ON DUPLICATE KEY UPDATE `data`=`data`
这里大家先尝试向table_name
表中插入一条数据“data_value”值,如果已经存在这个值,那么就会更新原有数据。而ON DUPLICATE KEY UPDATE
语句中的`data`=`data`
部分虽然看起来没有意义,但它确实是必须的,因为MySQL要求UPDATE
语句需要修改至少一行数据,否则会抛出错误。