MySQL上主键的重复条目

问题描述 投票:-1回答:4

我的表只有单列ID(admin登录密码)

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

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

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

我的桌子:

错误:

mysql sql primary-key duplicates
4个回答
3
投票

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

SET 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;

0
投票

另一种可能性

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

0
投票

您可以使用INSERT IGNORE。

INSIGN IGNORE进入管理员价值观(200);


0
投票

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

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

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

INSERT ... ON DUPLICATE KEY UPDATE ...优点:可以插入或更新可能包含更多最新数据的特定列缺点:更难写入查询

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

© www.soinside.com 2019 - 2024. All rights reserved.