这是我的代码:
INSERT INTO titles_production_companies (production_companies_name, production_companies_tmdb_id, title_id)
values
('United Artists', '60','1'),
('Achte Babelsberg Film', '6100','1'),
('Metro-Goldwyn-Mayer (MGM)', '8411','1'),
('Bad Hat Harry Productions', '9168','1')
ON DUPLICATE KEY UPDATE
title_id=LAST_INSERT_ID(title_id),
production_companies_name='United Artists',
production_companies_tmdb_id='60',
title_id='1',
production_companies_name='Achte Babelsberg Film',
production_companies_tmdb_id='6100',
title_id='1',
production_companies_name='Metro-Goldwyn-Mayer (MGM)',
production_companies_tmdb_id='8411',
title_id='1',
production_companies_name='Bad Hat Harry Productions',
production_companies_tmdb_id='9168', title_id='1';
我收到了这条消息:
完整性约束违规:1062重复录入'1-Bad Hat Harry 制作-9168'用于关键'uc_production_companies''
答案 0 :(得分:0)
您的情况下的答案可能与您的(My?)SQL服务器有关,而不是与PHP相关。
让我们考虑一下您的代码执行步骤:
INSERT
声明现在,如果您在UNIQUE
子句填写的任何字段上有ON DUPLICATE
索引,则很可能在任何触发的重复INSERT上都会重复言。
看一下你的例子,看来你的索引为UNIQUE
所有production_companies_name
个触发器都违反了ON DUPLICATE
列,因此只有第一个会起作用,其余的都会抛出此错误。
可能的解决方案:
UNIQUE
列中删除production_companies_name
类型索引(如果有)。UNIQUE
索引。UNIQUE
索引。如果有帮助,请告诉我: - )