我的表只有一列ID
(管理员登录密码)
因为每次程序启动时都会运行此代码,所以我可以使用creating database
语句防止creating tables
和IF NOT EXIXTS
发生错误。
由于adminLogin
表应该是第一次初始化,当用户重新运行程序时,会发生Duplicate entry for primary key
错误。
我使用IF NOT EXISTS
插入表格,但还有一些错误!
我的表:
错误:
答案 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 优点:可以插入和更新可能包含更新数据的列。重复密钥更新比插入更快。 缺点:即使只有一些列可能有更新的数据,也会覆盖每一列。如果要插入多行,则替换为可能会覆盖您不想覆盖的现有行的数据。