【问题标题】:Using INSERT INTO.. ON DUPLICATE KEY UPDATE on Doctrine在 Doctrine 上使用 INSERT INTO.. ON DUPLICATE KEY UPDATE
【发布时间】:2017-02-21 02:21:06
【问题描述】:

我在 Symfony2 上使用 Doctrine 并尝试在我的表上插入一些值,但如果我尝试插入重复键,我会收到系统错误:

SQLSTATE[23000]:违反完整性约束:1062 键“唯一”的重复条目“test-1-2-2016-10-11-13”

这是我的代码:

                $insert = new Alerts();
                $insert->setAlKeyword($alert_keyword);
                $insert->setAlLocation($alert_location);
                $insert->setAlDevice($alert_device);
                $insert->setAlSource($alert_source);
                $insert->setAlSubDate(new \DateTime($alert_date);
                $insert->setAlSubHour($alert_time);
                $insert->setAlTotal(+1);
                $em = $this->getDoctrine()->getManager("my_em");
                $em->persist($insert);
                $em->flush();

问题在于 DUPLICATE KEY UPDATE 语句:如何在学说中使用该语句?

非常感谢

【问题讨论】:

标签: php symfony doctrine duplicates entity


【解决方案1】:

利用Unique 约束。这将阻止您在唯一索引已存在时尝试保存。

将此应用于您在表中设置的唯一索引的实体。

如果是复合主键,look at this answer

【讨论】:

  • 防止重复不是问题。
【解决方案2】:

从您的学说配置位置删除非唯一声明上的unique: true

【讨论】:

  • 这不是一个合适的解决方案。当 OP 要求重复的密钥更新语句时,您最终会得到 2 行。
猜你喜欢
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多