実現したいこと
下記サンプル構造で、新規データをエラーなくインサートするにはどのようにしたらいいでしょうか?
前提
編集した履歴用のテーブルを作ると膨大な数になるため一つのテーブルで編集履歴も兼ねたテーブル構成になっていて、特に下記がネックになっています。
copy_idには、
・新規インサートは新規インサート時のPKを入れる ←これがネック
・データ編集時は元のデータのPKを入れる
(データ編集・更新時も新規インサートするが、copy_idは編集元のidを入れる)
削除は物理削除対応です。
サンプルテーブル構造
users テーブル
column | 型 | NULL |
---|---|---|
id | PK autoincrement | × |
copy_id | int | × |
name | varchar | × |
varchar | × | |
penname | varchar | 〇 |
created_at | datetime | × |
updated_at | datetime | × |
外部キー制約
column | 対象 | 制約 |
---|---|---|
copy_id | users.id | NO ACTION |
試したこと
copy_idのNOT NULL制約を外せば簡単に解決するのは分かっているのですが、
外部キー制約もしてかっちり固めたい意図もあるようです。
また、新規インサート時に最新データのPKを取得してそこから次のPKを予想して入れる方法も考えたのですが、危険かな・・と思い止めました。
どのように実現したらいいか、またその他方法などお知恵をお借りいただければと思います。