我想插入值,如果它存在“插入..重复更新”将更新它,但它不会更新自动增量val新插入one.I听说插入在重复更新有一些错误,它总是生成新的ID,如果存在,它会删除它,但我想得到确切的这个删除的ID(当我使用last_inserted_id它只是返回最新的更新列的ID不是新插入一个)我想用新的插入的查询更新id应该像下面这样操作:insert if exists delete one one and insert new one(with auto increment)。我听说有替换成,但速度很慢,我想用新插入的ID更新id 。插入重复更新获取“新”生成的ID
回答
尊重,如果您尝试使用自动增量列执行奇特的更新逻辑,您就会玩火。
如果在更新它时需要一个新的自动增量id,那么只需删除旧的行并插入像Gordon所说的新行。
在某些数据库工作负载下,可能会比使用insert on duplicate key update
稍慢。但是除非你的桌子上至少有100个菜单,否则,除非你每天和每晚至少每秒执行10次这些操作,否则性能差异将变得微不足道。如果您确实有这种数据库大小或工作负载,请向数据库管理员咨询。
REPLACE
= DELETE
,然后INSERT
。 IODKU从不删除。每个要求您指定一些UNIQUE
密钥的列,以便知道要使用的行。一个微妙点:如果有多个UNIQUE
键,REPLACE
可能会删除多行,然后只插入一个。
IODKU可以通过使用... UPDATE id = LAST_INSERT_ID(id), ...
来获得id(现有的或新的)。
好吧我会这样做,但我想知道哪些重复的情况比删除和插入更慢? –
'REPLACE'必须做更多的工作,所以它可能总是比较慢。我添加了一些更多的信息给答案。 –
你说LAST_INSERTED_ID我想得到这样的东西更新ID与最后一个由“INSERT ...在重复更新”生成,但它给了我身份证本身的更新elem(旧的) –
- 1. MySQL插入重复更新
- 2. 插入后获取生成的ID
- 3. 实体框架4 - 获取更新/插入生成的SQL
- 4. “在重复更新插入”仍然插入重复项
- 5. 的MongoDB:对重复键更新插入
- 6. Android的房间 - 获取新插入的行的ID与自动生成
- 7. 增量更新插入...重复密钥
- 8. 插入对重复键更新,如果
- 9. 批量插入与重复键更新
- 10. MySql,插入重复更新,其中
- 11. 插入...重复密钥更新(PHP:PDO)
- 12. mysql插入和重复更新
- 13. CRecordset - 在更新后获取自动生成的ID()
- 14. 如何获取插入行的ID和更新行?
- 15. MySQL在重复密钥更新只插入,不更新
- 16. 重复密钥更新不只更新插入
- 17. 从插入/更新查询获取最后插入的ID返回
- 18. Hibernate生成新的Id而不是从数据库获取Id?
- 19. 重新生成现有记录的ID
- 20. MySQL的重复密钥更新插入新行
- 21. C#插入MDB数据库获取最新插入ID
- 22. 插入/更新后获取时间戳
- 23. 获取插入后产生的ID
- 24. Sql Server 2005 - 插入更新触发器 - 获取更新,插入行
- 25. 如何获取插入表的行的自动生成的id?
- 26. 对重复密钥更新插入新记录
- 27. 用自动生成的ID插入一条新记录
- 28. 插入或更新获取“交易查询已完成”
- 29. Slick/Oracle PLAIN SQL在插入后获取自动生成的ID
- 30. 插入后获取自动生成的ID
然后分两步做。你需要一个真正的'delete',后面跟一个'insert'。这不是'重复密钥更新'。 –
@GordonLinoff但我听说插入和删除比插入更慢...重复更新 –
@GordonLinoff我应该删除,然后插入或有其他方式吗?我只需要更新新值与新ID –