0

my_tableなどの table にデータを保存するアプリケーションがあります。

my_table
id | name | salary

これはデータ入力アプリケーションであり、集中データベースを持っていません。すべてのデータ入力が完了したら、データベースをマージする必要があります。私の計画は、たとえばDB2から挿入ステートメントをエクスポートし、それをDB1に追加することです。だから私は次のように手順を書きました:

CREATE PROCEDURE insertToTable
DECLARE max_id INT DEFAULT 1
BEGIN
    SELECT MAX(id) INTO max_id FROM my_table

    INSERT INTO table(id,name,salary) VALUES(max_id+1,'tom',1000);
    INSERT INTO table(id,name,salary) VALUES(max_id+1,'john',1500);
    ....//a lot of statements 

END

ここでは、競合を避けるために DB2 の ID を DB1 の max(id) だけインクリメントします。正常に動作します。

しかし、一部のデータベースには多数のレコードがあります。位置に「max_id」変数を使用してこれらの挿入ステートメントを取得できます。次に、そのプロシージャ内のファイルからこれらの「挿入」ステートメントを実行できます。または、より良い解決策はありますか..

4

2 に答える 2

1

シーケンスを追加して、「Id」列を自動インクリメンタルにします。次に、挿入時に増加するトリガーを作成します。

于 2013-11-11T09:35:46.943 に答える