HTML beginner |
|
Ik heb volgend tabellen in mijn DB:
Tabel1
ID_tabel1 | field1
_____________________
1 | "blabla"
2 | "..."
Tabel2 (leeg)
ID_tabel2 | field2
_____________________
|
Nu heb ik aan tabel 1 een field toegevoegd "tabel2_ID_tabel2" dewelke een foreign key is die refereert aan tabel2.ID_tabel2 (de waarde mag null zijn).
Nu zou ik voor elk item in tabel1 een item willen aanmaken in tabel2. Daarbovenop moet tabel1.tabel2_ID_tabel2 aangepast worden naar de ID van het item aangemaakt in tabel2; en tabel2.field2 moet ingevuld worden met de waarde van tabel1.field1.
Kan dit op een automatisch manier; bvb door functies in SQL? En hoe pak ik dit het beste aan? tabel1 bevat ongeveer 200 items.
Na verder te kijken heb ik volgende procedure geschreven:
CREATE PROCEDURE forum()
BEGIN
DECLARE textfield1 VARCHAR(120);
DECLARE time TIMESTAMP;
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE id_idtabel1 INT(10);
DECLARE C_obj CURSOR FOR
SELECT ID_tabel1,field1 FROM tabel1 WHERE tabel2_idtabel2 IS NULL;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND=FALSE;
SET time=CURRENT_TIMESTAMP();
OPEN C_obj;
FETCH C_obj INTO id_idtabel1,textfield1;
WHILE FOUND DO
INSERT INTO tabel2 (field2)
VALUES (textfield1);
UPDATE tabel1
SET tabel2_ID_tabel2 = LAST_INSERT_ID()
WHERE ID_tabel1 = id_idtabel1;
FETCH C_obj INTO id_idtabel1,textfield1;
END WHILE;
CLOSE C_obj;
END
CREATE PROCEDURE forum() BEGIN DECLARE textfield1 VARCHAR(120); DECLARE time TIMESTAMP; DECLARE FOUND BOOLEAN DEFAULT TRUE; DECLARE id_idtabel1 INT(10); DECLARE C_obj CURSOR FOR SELECT ID_tabel1,field1 FROM tabel1 WHERE tabel2_idtabel2 IS NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND=FALSE; SET time=CURRENT_TIMESTAMP(); OPEN C_obj; FETCH C_obj INTO id_idtabel1,textfield1; WHILE FOUND DO INSERT INTO tabel2 (field2) VALUES (textfield1); UPDATE tabel1 SET tabel2_ID_tabel2 = LAST_INSERT_ID() WHERE ID_tabel1 = id_idtabel1; FETCH C_obj INTO id_idtabel1,textfield1; END WHILE; CLOSE C_obj; END
werkt en doet exact wat ik wou.
|