我正在尝试在 mysql 中实现“IF 记录存在,然后更新 ELSE INSERT”。具体来说,我必须弄清楚如何使用 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 = 'new_value')”吗?field
如果我不能说这样的话,有没有办法解决这个问题?