【发布时间】:2009-07-15 21:57:24
【问题描述】:
我正在尝试在 mysql 中实现“如果记录存在则更新其他插入”。具体来说,我必须弄清楚如何使用 Doctrine ORM 做到这一点。
使用本机 MySql 的一种解决方案是使用“ON DUPLICATE KEY UPDATE”。不幸的是,Doctrine 不支持这一点。
另一个半解决方案是使用“REPLACE INTO”语法。 Doctrine 支持这一点,但是 REPLACE 不会更新记录,而是删除记录并创建一个新记录(使用新的自动增量 ID。)因此,如果您像我一样依赖自动增量 ID,这是一个糟糕的解决方案.
我正在尝试操作的表是 INNODB,因此我研究了事务,但我不完全了解相同的规则是否适用于事务内部和应用在它们之外。
我可以在事务中说“IF(INSERT IGNORE INTO table critical_id = $id) THEN exit ELSE (UPDATE table SET field = 'new_value')”吗?
如果我不能这样说,有没有办法解决这个问题?
【问题讨论】:
标签: php mysql orm doctrine conditional