15

注: これが重複している場合は申し訳ありませんが、解決策が見つかりません。

まったく同じスキーマを持つ 2 つのデータベース (1 つの開発と 1 つのライブ) があります。

説明を簡単にするために、'customer' テーブルと 'quote' テーブルがあるとします。両方のテーブルには自動インクリメント ID があり、quote テーブルには customer テーブルへの外部キーとして機能する「customerid」列があります。

私の問題は、ライブデータベースにコピーしたい開発データベースにいくつかの行があることです。顧客の行をコピーすると、新しい ID を簡単に取得できますが、新しい ID を「子」見積テーブルの行に割り当てるにはどうすればよいですか?

問題を解決するために INSERTS を手動でスクリプト化できることはわかっていますが、これを行う簡単な方法はありますか?

編集: これは簡単な例です。約 15 個のテーブルがあり、そのすべてが自動インクリメントと外部キーを使用して階層を形成しています。ライブ データベースにはかなり多くのデータがあるため、新しい ID は大きくなります (例: dev.customer.id = 4、live.customer.id = 54)。

4

3 に答える 3

24

ID を変更しない最も簡単な方法。

  1. コピーするレコードが存在するテーブル (ソース データベース) に現在いることを確認します。

  2. 次のコマンドを実行します。

INSERT INTO to_database.to_table 
  SELECT * FROM from_table WHERE some_id = 123;

何も再マップする必要がない場合は、列を指定する必要はありません。

それが役立つことを願っています!

于 2013-08-27T16:18:17.350 に答える
0

使用INSERT... SELECT:

insert into your_table (c1, c2, ...)
select c1, c2, ...
from your_table

ここで、c1、c2、...は を除くすべての列idです。

于 2012-10-04T12:11:31.183 に答える