哪个更好:选择更新,删除和插入,还是替换?

时间:2014-01-25 23:07:05

标签: mysql select replace sql-insert sql-delete

我有一个表booking (id, date, interval)和另一个表booking_data (id, date, data),因此我在booking_dataid的{​​{1}}表格中附加了数据,因为我的预订是自动生成的,所以当我想插入数据以避免双重插入时,我必须使用以下方法之一:

  1. dateSELECTINSERT视需要
  2. {li> UPDATE DELETEid,然后date
  3. INSERT(我不确定这是否必须有两把钥匙,如果必须有两个我的第二个可以是日期。)
  4. 在我的情况下哪一项最好?

1 个答案:

答案 0 :(得分:1)

每种可能性都有不同的权衡,因此没有明确的单一答案。一些说明:

  1. 如果您使用SELECT后跟INSERTUPDATE,则需要使用交易START TRANSACTIONCOMMIT或设置{{1然后使用autocommit = 0,否则您可能与其他事务发生冲突。这有一个好处,但如果没有冲突,你可以避免做任何事情。

  2. 使用SELECT ... FOR UPDATE后跟DELETE手动完成INSERT的操作。单个语句中的REPLACE语句和单个事务在循环中尝试REPLACE,并且每次键冲突时,它都会删除有问题的行。手动执行此操作对您和数据库来说都是更多的工作,并且更难以正确实现。