我经常收到错误代码1062:重复输入。 第一行插入,但随后它在同一个ID上失败。 所以每次我点击执行它会增加:1466,1467,1468,1469。 并且每次输入相同的记录,所以我假设自动增量仅适用于第一次迭代。
表:
'entity':
CREATE TABLE `entity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`reg_num` varchar(45) NOT NULL,
`enterprise_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1474 DEFAULT CHARSET=latin1 COMMENT=\'Comment'
存储过程:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tp_to_entityPROC`()
DETERMINISTIC
COMMENT 'stored'
BEGIN
DECLARE done BOOLEAN DEFAULT 0;
DECLARE Tid INT;
DECLARE Tt_name TEXT;
DECLARE allt CURSOR FOR
SELECT training_provider_id, training_provider_name
FROM training_providers;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN allt;
read_loop: LOOP
IF done THEN
LEAVE read_loop;
END IF;
FETCH allt INTO Tid, Tt_name;
SET @id = 0;
SET @t_name = 0;
SET @id = Tid;
SET @t_name = Tt_name;
SET @empty = '';
if (@id != 0) THEN
INSERT INTO entity (name)
VALUES (@t_name);
SET @my_id = LAST_INSERT_ID();
IF @my_id != 0 THEN
UPDATE training_awarded_providers
SET training_awarded_provider_id = @my_id
WHERE training_awarded_provider_id = @id;
END IF;
END IF;
END LOOP;
CLOSE allt;
END
答案 0 :(得分:0)
不确定duplicate entry
的确切错误,但您发布的代码不起作用。
您的表架构
CREATE TABLE `entity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`reg_num` varchar(45) NOT NULL <-- Here it's non null column
在您的商店程序中,您尝试将null
插入reg_num
列,这将永远不会成功
if (@id != 0) THEN
INSERT INTO entity (name)
VALUES (@t_name);