MySQL上主键的重复项

MySQL上主键的重复项,mysql,sql,primary-key,duplicates,Mysql,Sql,Primary Key,Duplicates,我的表只有一列ID(管理员登录密码) 由于此代码在程序每次启动时都会运行,因此我可以使用IF NOT exits语句防止创建数据库和创建表时出错 由于adminLogin表应该是第一次初始化的,当用户重新运行程序时,主键的重复条目出现错误 我使用了IF NOT EXISTS插入到表中,但还有另一个错误 我的桌子: 错误: 您正在尝试插入相同的值。 PK应该是唯一的 将ID设置为自动增量 CREATE TABLE `table_code` ( `id` int(11) NOT NULL AU

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

由于此代码在程序每次启动时都会运行,因此我可以使用
IF NOT exits
语句防止
创建数据库和
创建表时出错

由于
adminLogin
表应该是第一次初始化的,当用户重新运行程序时,
主键的重复条目出现错误

我使用了
IF NOT EXISTS
插入到表中,但还有另一个错误

我的桌子:

错误:


您正在尝试插入相同的值。 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;
另一种可能性

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

您可以改为使用INSERT IGNORE

在ADMINLOGIN值中插入IGNORE(200)

插入忽略 插入在重复密钥更新时。。。 更换为可以正常工作的所有部件。根据您的需要,有些可能比其他更好

以下是每种方法的优点和缺点:

插入忽略: 优点:容易写 缺点:如果插入的数据较新,则会保留较旧的数据

插入。。。在重复密钥更新时。。。 优点:可以插入或更新可能包含较新数据的特定列 缺点:编写查询有点困难

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

教自己在遇到语法错误时查看MySQL文档。(Insert语句不使用WHERE子句。)注意使用
IGNORE
时应小心,因为它不仅会忽略重复的错误,还会忽略其他错误。