奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

ダブルブッキングを防ぐ予約追加プログラムを考えた

以下に書いてみたんですけどね。

other/reservation_double_booking_check at master · kitoku-magic/other · GitHub

いや~これは、やっぱり予約レコードが「無い」時が厄介なのと、
あと、ダブルブッキングを「何処でチェックするか」というのが・・・
ダブルブッキングは、afterのトリガーでも仕込んでチェックというのも考えましたが、
でも、トリガー好きじゃない(昔、3日ぐらいハマった事が)しで、
こんな感じになりました。


ただ、これでもタイミングによっては、ダブルブッキングは防げても、
稀に正常に予約が追加されない事がある(リトライし続けても、ホントに同時にINSERT文が実行され続けると)と思われるという・・・
分離レベルをSERIALIZABLE(こちらはパフォーマンスに難)にしないと、きっちりは無理なんじゃないの?的な。


なので今後も、ちょくちょく「完璧形」を探っていきましょうか。
あと、参考URLは、覚えている範囲で(笑)


参考URL:

MySQL _ 日付期間比較

なかったらINSERTしたいし、あるならロック取りたいやん?

doc/innodb.md at master · ichirin2501/doc · GitHub

php - Insert query check if record exists - If not, Insert it - Stack Overflow

php - How to 'insert if not exists' in MySQL? - Stack Overflow