予約システムを製作しています。
以下のようなテーブル構成です。
不要なカラムは無視、テーブル名などはわかりやすく変更しています。
-
空き時間テーブル(times)
-
id (INT)
-
jikan (DATETIME)
-
通常予約テーブル(yoyakus)
-
id (INT)
-
time_id (INT)
-
time_idにユニークインデックス
-
特殊予約テーブル(special_yoyakus)
-
id (INT)
-
time_id (INT)
-
time_idにユニークインデックス
通常予約と特殊予約は、予約の中身が違うため、別テーブルになっています。
ただ、予約する時間は、同じ時間を奪い合うようなかたちです。
例えば、2016/01/01 07:00の時間に空き時間がある場合、timesテーブルに
id: 1(オートインクリメント)
jikan: 2016-01-01 07:00:00
のレコードが作成され、そこに通常予約が発生すると、yoyakusテーブルに
id: 1(オートインクリメント)
time_id: 1
が作成されるようなかたちです。
このとき、通常予約と特殊予約が同時に発生した場合に、システム的に同じ時間に2重で予約が入らないようにしたいです。
yoyakusテーブルとspecial_yoyakusテーブルにはそれぞれtime_idにユニークインデックスが入っているため、通常予約・特殊予約同士で2重になることはないですが、通常予約テーブルと特殊予約テーブル間で2重にならないよい方法があれば教えて下さい。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。