💡
一時テーブルと外部キー制約のあれこれ!セッション限定のデータってどう扱うの?
勘違いしていたのでメモついでに。。。
一時テーブルってどんなもの?
一時テーブルって聞くと、ちょっと特別な感じがするけど、実はセッションが終わるとパッと消えちゃう、ハレの日用のお皿みたいなもの。使ったら後片付けいらずで便利なんだけど、ちょっと取り扱いには注意が必要なんだよね。
外部キー制約ってどう扱うの?
外部キー制約は、データベースの整合性を保つためのルールの一つ。たとえば、「顧客ID」があるテーブルと「注文情報」があるテーブルがあったとして、注文情報には必ず実在する顧客IDが紐づいていないといけない、というルールを設けることができるの。
じゃあ、一時テーブルに外部キー制約を使うと?
ここがポイント!一時テーブルに外部キー制約を設定する場合、その外部キーの対象もまた一時テーブルでないといけないんだ。なんでかっていうと、一時テーブルは使い捨てられる性質上、永続的なテーブルと縛り付けてしまうと、データの整合性を保つのが難しくなっちゃうからね。
なんとなくわかってきた!でも…
外部キー制約をつけずに、データの存在を確認する方法はないの?と思うかもしれないね。これには、アプリケーション側で工夫するか、トリガーを使う方法があるよ。ただし、これらの方法は完璧ではないから、使うときは慎重にね。
Let's happy coding!
Discussion