我有一个程序,我现在用了一段时间.我工作得很好,但它也向我显示了完成后的错误. 以下是操作步骤:

CREATE PROCEDURE `import_U_P`()
BEGIN

DECLARE anzahl INT DEFAULT 0;
DECLARE zaehler INT DEFAULT 0;

SELECT COUNT(*) FROM help_import_U_P INTO anzahl;
SET zaehler = 0;
WHILE zaehler < anzahl DO
  
-- Einfügen der Felder in Personen
INSERT INTO eitw_Personen(PersID, P_Aktiv)
    SELECT PersID, P_Aktiv
    FROM help_import_U_P WHERE P_bekannt NOT LIKE "%Y%"; 
    
SET zaehler = zaehler + 1;
END WHILE;

END;

我得到的错误是:

Query 1 ERROR at Line 1: : Duplicate entry '23785' for key 'eitw_personen.PRIMARY'

其中,23785是我使用该过程插入的第一条记录的ID. 我想这是计数器的问题,就像他太多地数1一样--所以我试着设置了zaehler = 1,也是在另一边:WHILE zaehler < anzahl-1 DO.但我总是收到同样的错误.现在我的pip 快用完了.有人知道如何防止这个错误吗?

干杯 拉尔夫先生

推荐答案

复制一组行不需要WHILE次循环.如果SELECT匹配您需要的所有行,它将在一条语句中插入这组行.

CREATE PROCEDURE `import_U_P`()
BEGIN

INSERT INTO eitw_Personen(PersID, P_Aktiv)
    SELECT PersID, P_Aktiv
    FROM help_import_U_P WHERE P_bekannt NOT LIKE '%Y%'; 
    
END

Mysql相关问答推荐

返回50%的随机结果

S优化联接更新的最佳方式是什么?

MySQL binlog事件上的并发事务行为

SQL:CAST与窗口函数组合导致语法错误

从连接表中try 按唯一ID计算行数 MySQL

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

仅当 SELECT 语句在 MySQL 中给出空集时才执行 UPDATE 语句

SQL:如何为给定组中的所有记录 Select 一列与另一列不匹配的位置

提取 MySQL 5.7 连续值的差异

将 wordpress 自定义字段转换为单个数组

使用 ON DUPLICATE KEY 将列增加一定数量 MySQL NodeJS

Select 在同一天售出不同活动门票的收银员

提高mysql导入速度

如何在 MySQL 中删除具有 2 列作为复合主键的多行?

错误 1396 (HY000): 'user'@'localhost' 的操作 DROP USER 失败

自动登录 phpMyAdmin

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

比较 MySQL 中的日期忽略 DateTime 字段的时间部分

如何允许 django 管理员将字段设置为 NULL?