我有一个表booking (id, date, interval)
和另一个表booking_data (id, date, data)
,因此我在booking_data
和id
的{{1}}表格中附加了数据,因为我的预订是自动生成的,所以当我想插入数据以避免双重插入时,我必须使用以下方法之一:
date
和SELECT
或INSERT
视需要UPDATE
DELETE
和id
,然后date
INSERT
(我不确定这是否必须有两把钥匙,如果必须有两个我的第二个可以是日期。)在我的情况下哪一项最好?
答案 0 :(得分:1)
每种可能性都有不同的权衡,因此没有明确的单一答案。一些说明:
如果您使用SELECT
后跟INSERT
或UPDATE
,则需要使用交易START TRANSACTION
和COMMIT
或设置{{1然后使用autocommit = 0
,否则您可能与其他事务发生冲突。这有一个好处,但如果没有冲突,你可以避免做任何事情。
使用SELECT ... FOR UPDATE
后跟DELETE
手动完成INSERT
的操作。单个语句中的REPLACE
语句和单个事务在循环中尝试REPLACE
,并且每次键冲突时,它都会删除有问题的行。手动执行此操作对您和数据库来说都是更多的工作,并且更难以正确实现。