如何使用auto_increment在游标循环中插入和更新

时间:2016-05-14 03:26:28

标签: mysql sql mysql-workbench

我已经尝试查看了许多主题,但如果弄清楚我的语法有什么问题就没有成功。我试图将一个表的明确值和循环插入到另一个表中,而id是auto_incrementing。这是我到目前为止所得到的,我似乎无法弄清楚我做错了什么。我写了2个程序。他们都“工作”,但没有。

感谢您的帮助!

基本上我试图从一个表插入另一个表,并使用AUTO_INCREMENT生成我的build_id。我要填写的表是:

permits.build_type

build_id      INT             PK
build_desc    VARCHAR(200)

,代码是:

DELIMITER //

CREATE PROCEDURE building_list()
BEGIN
  DECLARE output VARCHAR(200);
  DECLARE my_cursor CURSOR FOR 
        SELECT DISTINCT BUILDING_TYPE 
        FROM permits.edmonton_upto_10may2016_mostly_text;

  OPEN my_cursor;  
  BEGIN
    DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END; 
    LOOP
      FETCH my_cursor INTO output; 
      INSERT INTO permits.build_type (build_desc) VALUES (output);
      UPDATE permits.build_type SET build_id = LAST_INSERT_ID();
    END LOOP;
  END;
  CLOSE my_cursor;
END//

1 个答案:

答案 0 :(得分:0)

为什么不使用简单的INSERT SELECT?

INSERT INTO built_type(build_desc)
SELECT DISTINCT BUILDING_TYPE 
    FROM permits.edmonton_upto_10may2016_mostly_text;