2012-01-11 52 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 2012-01-11 21:43:00

回答

1

基於this頁mysql的文檔中,你所要做的:

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 2012-01-12 02:54:50

相關問題