2012-01-11 16 views
0

次のSQL文は、別のサーバに移動するまで完全に動作しています。真ん中のクエリ(**でカプセル化されています)はうまくいかないようです。私は、 'AUTO'が間違った整数型であるというエラーが出ています。私はそれを完全に削除すると、フィールドの数が正しくないと言います。あるテーブルから別のテーブルにデータをコピーしようとしていて、宛先テーブルがそのID番号を自動的に増やすことを許可しています。自動増分フィールドを使用してテーブル間でデータをコピーできない

  SET sql_safe_updates=0; 
      START TRANSACTION; 
      DELETE FROM shares 
      WHERE asset_id = '$asset_ID'; 

      /*************************************************************/ 
      INSERT INTO shares 
      SELECT 'AUTO', asset_ID, member_ID, percent_owner, is_approved 
      FROM pending_share_changes 
      WHERE asset_ID = '$asset_ID'; 
      /*************************************************************/ 

      DELETE FROM pending_share_changes 
      WHERE asset_ID = '$asset_ID'; 
      DELETE FROM shares 
      WHERE asset_ID = '$asset_ID' AND percent_owner = '0'; 
      COMMIT;"; 
+0

はい、あります。基本的に、テーブル1には現在のデータがあります。表2は新たに提案されたデータを取得する。承認された場合、このクエリはテーブル1からデータを削除し、テーブル2のデータをテーブル1にコピーしてから、テーブル2のデータを削除します。 – Progger

答えて

1

MySQLのドキュメントのthisページに基づいて、あなたがしなければならない。

INSERT INTO shares 
    (column_name1, column_name2, column_name3, column_name4) -- changed! 
SELECT asset_ID, member_ID, percent_owner, is_approved 
FROM pending_share_changes 
WHERE asset_ID = '$asset_ID'; 

差が「受信」テーブルのカラム名を明示的に受けの名前の後にリストされていることです表。

ドキュメントは

AUTO_INCREMENTカラムを言うには、いつものように動作します。

+0

これは動作したようです!ちょうど私のWin7のボックスではなく、私のWin2k8で動作するか分からない。いずれにしても、新しいコードは両方でうまく動作します。ありがとう! – Progger

関連する問題