MySQL上主键的重复条目

时间:2014-09-03 12:16:48

标签: mysql sql primary-key duplicates

我的表只有一列ID(管理员登录密码)

因为每次程序启动时都会运行此代码,所以我可以使用creating database语句防止creating tablesIF NOT EXIXTS发生错误。

由于adminLogin表应该是第一次初始化,当用户重新运行程序时,会发生Duplicate entry for primary key错误。

我使用IF NOT EXISTS插入表格,但还有一些错误!

我的表:

first screen

错误:

second screen

4 个答案:

答案 0 :(得分:3)

您正在尝试插入相同的值。 PK应该是独一无二的。

将ID设置为自动增量。

CREATE TABLE `table_code` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `your_column` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

答案 1 :(得分:0)

另一种可能性

INSERT INTO adminLogin(ID) VALUES(100) ON DUPLICATE KEY UPDATE ID=ID;

答案 2 :(得分:0)

您可以改用INSERT IGNORE。

INSIGN IGNORE INTO ADMINLOGIN VALUES(200);

答案 3 :(得分:0)

INSERT IGNORE INSERT ... ON DUPLICATE KEY UPDATE ... REPLACE INTO可以正常工作而不会出错。根据您的需要,有些可能比其他用途更好。

以下是各自的简要优点和缺点:

INSERT IGNORE: 优点:易于编写 缺点:如果要插入的数据较新,则会保留旧数据

INSERT ... ON DUPLICATE KEY UPDATE ... 优点:可以插入或更新可能包含更新数据的特定列 缺点:为

编写查询有点困难

替换为INTO 优点:可以插入和更新可能包含更新数据的列。重复密钥更新比插入更快。 缺点:即使只有一些列可能有更新的数据,也会覆盖每一列。如果要插入多行,则替换为可能会覆盖您不想覆盖的现有行的数据。