0

同じIDが2つのテーブルに2回表示されないようにすることは可能ですか? たとえば、私はこの列を持っています:そして、call id それが ex: の両方のテーブルでそれをカウントすることを確認し たいのですが、両方のテーブルのデータを入力し、ex: の両方のテーブルから列が増加することを確認したいのです:calls_to_xcalls_to_ycall id

calls_to_x:

コール ID: 1 パラメータ: .... 時刻: 01:00:00

コール ID: 3 パラメータ: .... 時刻: 01:30:00

calls_to_y:

コール ID: 2 パラメータ: .... 時刻: 01:10:00

コール ID: 4 パラメータ: .... 時刻: 01:34:00

4

2 に答える 2

1

答えは、使用しているRDBMSによって異なります。

MySQLの場合:

一意の値のみが必要な場合(シーケンシャルではない場合)、UUIDなどを使用して各行を一意に識別できます。

値をシーケンシャルにする必要がある場合は、コンテンツのタイプを示すフィールドを使用してテーブルを1つのテーブルにマージするか、3番目のテーブルを使用してその列のidフィールドとauto_incrementで使用済みIDを追跡します。2番目の列は、必要に応じて、どのテーブルがIDを使用したかを追跡できます。SQL関数でそのテーブルにINSERTを挿入し、LAST_INSERT_ID()の値を返して、他のテーブルの次のIDを取得できます。

他のほとんどのRDBMSの場合

シーケンスを使用します(CREATE SEQUENCE)

于 2013-01-06T16:23:25.850 に答える
1

もう 1 つのオプションは、callid を持つ AllCalls のテーブルを作成し、受信者にこの ID を外部キーとして 2 つのテーブルのいずれかに含めることです。異なるフィールドのみが、calls_to_x テーブルと calls_to_y テーブルにある可能性があり、通常、すべてのコールに適用できるものはすべて、AllCalls テーブルにある可能性があります。

于 2013-01-06T16:30:35.580 に答える