向包含预定义主键的mysql表插入行

向包含预定义主键的mysql表插入行,mysql,sql,database,Mysql,Sql,Database,我一直在寻找这个问题的解决办法,但没有找到任何令人满意的办法。我知道类似的问题很多次都得到了解答,但通常都有解决办法,而不是标准的解决方案 在我的个案中,问题是: 我有一个包含预定义主键的表,不能用作自动增量。它是预定义的,并且还被其他几个表用作外键 NID-我的主键 PID-来自外部源的密钥 连载 布拉1 废话 NID已经在表ID(目标表)中,而不是在源表中 PID已在源文件/表中,而不是在目标表中 两个表中都有其他列 NID-PID对将是唯一的匹配,因为匹配后将进一步使用这些匹配 现在,我需

我一直在寻找这个问题的解决办法,但没有找到任何令人满意的办法。我知道类似的问题很多次都得到了解答,但通常都有解决办法,而不是标准的解决方案

在我的个案中,问题是:

我有一个包含预定义主键的表,不能用作自动增量。它是预定义的,并且还被其他几个表用作外键

NID-我的主键

PID-来自外部源的密钥

连载

布拉1

废话

NID已经在表ID(目标表)中,而不是在源表中

PID已在源文件/表中,而不是在目标表中

两个表中都有其他列

NID-PID对将是唯一的匹配,因为匹配后将进一步使用这些匹配

现在,我需要能够每周在此表中插入值,因为这些值将以csv/excel文件和数百条记录的形式发送给我,所以最好采用一些简单的方法,特别是因为简单的方法很容易验证导入过程

由于没有自动递增PK,我得到一个错误:

1062-密钥“NID”的重复条目“”

我正在考虑在多个字段上创建唯一索引,如:

CREATE UNIQUE INDEX unique_index ON ids (NID,PID);
但它也没有很好地发挥作用:

1062-键“唯一索引”的重复条目“107521”

我还尝试创建单独的表,其中包含要导入的数据,但得到了相同的错误

问题是:在不改变现有数据的情况下,向包含PK的表中插入记录并继续定期这样做的最佳方法是什么?我应该怎么做才能做到这一点


我非常感谢您的帮助,因为我被卡住了。

主键在定义上是唯一的。多行不能具有相同的主键。删除主键或不要插入重复的行。@kordirko感谢您的评论。删除NID上的PK肯定会有帮助,因为NID在设计上是唯一的,因为此表中没有重复项(也不会重复)。我试图从外部文件插入的每一行(至少在这个阶段)都是唯一的。