2016-05-14 7 views
1

Ich habe versucht, viele der Themen schon durchzusehen und keinen Erfolg, wenn herauszufinden, was ist falsch mit meiner Syntax. Ich versuche, den eindeutigen Wert eines Table-and-Loop-Einschubs in eine andere Tabelle zu übernehmen, während die ID auto_incrementing ist. Hier ist, was ich bisher habe und ich kann nicht herausfinden, was ich falsch mache. Ich habe 2 Prozeduren geschrieben. Sie arbeiten beide, tun es aber nicht.Wie Einfügen und Aktualisieren in Cursor-Schleife mit Auto_increment

Vielen Dank für Ihre Hilfe!

Grundsätzlich versuche ich, von einer Tabelle in eine andere Tabelle einzufügen, und verwenden Sie die AUTO_INCREMENT, um meine Build-ID zu generieren. Die Tabelle I füllen wollen, ist:

permits.build_type 

build_id  INT    PK 
build_desc VARCHAR(200) 

und der Code ist:

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// 
+0

Hallo ja, vielen Dank! Wie albern die Antwort ist so einfach .... Ich Gesicht völlig palmed, wenn ich Ihre Antwort lesen ... – Erilyn

+0

froh, von Hilfe gewesen zu sein – e4c5

Antwort

0

Warum verwenden nicht nur eine einfache INSERT SELECT?

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

Sorry neu in MySQL und vor allem von Oracle PLSQL und so habe ich verstanden, dass ich brauchte um es zu loopen, während das auto_increment eingeht oder wenn ich das einfüge, selektiere, wird das automatische Inkrement nur auffüllen? Ich muss es nicht anrufen oder so? – Erilyn

+0

Wenn Sie eine Null in eine automatische Spalte setzen, wird sie durch den nächsten Wert für die automatische Erhöhung ersetzt. – e4c5

Verwandte Themen