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
时应小心,因为它不仅会忽略重复的错误,还会忽略其他错误。