与えられたオブジェクトがN個以下の子オブジェクトを持つことができるビジネスレベルの制約があるとします。子オブジェクトを作成する場合は、そのオブジェクトに対してN個以上の子オブジェクトを作成しないようにするにはどうすればよいでしょうか?RDBMSにおける複数行のテーブル制約
READを実行して既存の子オブジェクトの数を取得する場合は、Nより小さいかどうかを検証してから、テーブルにINSERTを実行します。別のINSERTが取得できるREADとINSERTの間に時間があります。
これは、他のクエリに悪影響を与える可能性があるため、テーブルをロックしたくない場合です。
さらに具体的な例は、常駐オブジェクトとホームオブジェクトがある場合です。 Residentテーブルには、id、resident_name、home_idのようなものがあります。 4人以下の住人が同じhome_idを持っていることをどうやって確認しますか?
プログラムのロジックではなく、SQLでない –
あなたがアプリケーションでそれを行う場合、あなたはどんな種類のロック機構を持っていますか? 2番目の段落でそれを呼び出しました。READ、VALIDATE、INSERTを実行すると、別のINSERTが中間に入ります。パフォーマンスが悪いテーブル全体をロックしない限り。 – thait84