0

主キーのプールを共有する必要があるさまざまなテーブルがあります。

たとえば、テーブル A には主キー 0 から 9 があり、テーブル B には主キー 10 から 19 があります。

主キーをどこから取得するかをmysqlに伝える方法はありますか? ストアドプロシージャのような?バケットの分布を把握しているスクリプトを実行するだけで十分です。

素朴なアプローチは、各挿入ステートメント内で主キーを設定することです。その PK はそのプールから引き出されます。実際、これは、避けたいDBに挿入する各アプリケーション(phpやjavaなど)内に実装する必要があります。

4

1 に答える 1

1

テーブルが主キーを共有する必要がある理由がわかりません。

あなたの説明はすでに問題を裏切っています。主キーは無意味であるべきです (または、せいぜい挿入順序を示すことができます)。特定の範囲を異なる目的に割り当てることはできません。

代わりに、各テーブルに独自の自動インクリメント ID を設定できます。1 つの可能性は、自動インクリメント ID を持つ別のテーブルを用意し、そのテーブルへの外部キー参照を使用することです。欠点は、それぞれに対して両方のテーブルに挿入する必要があることですinsert。これは、トリガーで簡単に実行できます。

主キーの「範囲」の代わりに、明示的な型が必要です。

于 2015-09-15T11:40:04.637 に答える