私は2つのテーブル、ユーザーとグループのそれぞれが自動インクリメントプライマリキーを持っていると言う。新しいユーザーが作成されるたびに、そのユーザーと同時に(同じトランザクションで)グループを作成したいと考えています。しかし、ユーザはどのグループに属しているかを知る必要があるため、各ユーザはgroup_idを保存します。自動インクリメントIDをトランザクション内で予約
これを行うために、私が作成し、データベースにグループを挿入し、私はちょうど挿入され、そのグループの主キーが何であったかを知る、そして最終的にはその新しいグループの主キーを持つユーザーを挿入します。私は、データベースにグループをコミットする必要があり
注意は、それが割り当てられた主キーを取得するために(これだけでなく、ユーザーをコミットして任意のトランザクション外でそれを持ちます)。
これはほとんどの状況で動作しますが、グループを挿入してプライマリキーを見つけてから、ユーザを挿入すると何らかの障害(停電、システムクラッシュなど)が発生した場合は、矛盾したデータベースで終わるでしょう。
システムがクラッシュしたが、それは矛盾した状態にまで終わらない場合ように、一時的に主キーを確保するような何かをする方法はありますか?
私は、MySQLデータベースと主に心配ですが、(他のデータベースバックエンドと互換性があり、これで、)私はこれを行うことを可能にする標準SQLで何かがあれば、私もそれを知ることに興味があります。
私は明らかにすべきです:主キーの内容を知るために、グループをデータベースにコミットする必要があります。それから私はグループのIDでユーザーをコミットできます。 これは、同じトランザクションで2つを組み合わせることができなくなります。 –
それは悲しいです。あなたは本当のrdbmsに変更することができますか、あなたは立ち往生していますか? –