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」変数を使用してこれらの挿入ステートメントを取得できます。次に、そのプロシージャ内のファイルからこれらの「挿入」ステートメントを実行できます。または、より良い解決策はありますか..