多个重复键更新值


multiple ON DUPLICATE KEY UPDATE value

这是我的代码:

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-坏帽子哈利 Productions-9168' 用于密钥"uc_production_companies">

你情况中的答案可能与你的(我的?SQL服务器比PHP。

让我们考虑一下指示代码执行的步骤:

  1. 运行INSERT语句
  2. 检查语句中是否有任何重复键
  3. 如果检测到重复键,请使用给定的(固定(值填充某些字段。

现在,如果您在 ON DUPLICATE 子句填写的任何字段上有UNIQUE索引,则很可能在任何触发的重复 INSERT 语句上都会重复该索引。

看看你的例子,你的索引似乎UNIQUE production_companies_name列在所有触发器上都违反了ON DUPLICATE,因此只有第一个触发器有效,其余所有触发器都将抛出此错误。


可能的解决方案:

  1. production_companies_name列中删除UNIQUE类型索引(如果有(。
  2. 不要尝试用静态值填充任何UNIQUE索引。
  3. 不要尝试填写任何UNIQUE索引。

让我知道这是否有帮助:-(