使用自动增量字段将数据从一个表复制到另一个表时出错

时间:2012-01-11 21:39:25

标签: mysql

我有以下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;";

1 个答案:

答案 0 :(得分:2)

基于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列照常工作。