2012-01-11 39 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

相关问题