複製記錄我有3個表的父,子&孫子的形式爲:MySQL存儲過程中的父/子/孫層次
+----------------+ +----------------+ +---------------------+
| parent | | child | | grandchild |
+----------------+ +----------------+ +---------------------+
| parent_id (PK) | | child_id (PK) | | grandchild_id (PK) |
| parent_data | | child_data | | grandchild_data |
+----------------+ | parent_id (FK) | | child_id (FK) |
+----------------+ +---------------------+
PK =自動遞增的主鍵。
FK =外鍵。
我想要一個可以複製父表中的記錄和子表和孫表中的任何關聯記錄的存儲過程。我可以將父數據和子數據複製好,它是我正在努力的孫表。這是我得到的:
CREATE FUNCTION sf_copy_parent(p_parent_id INT) RETURNS INT
BEGIN
DECLARE new_parent_id INT;
-- create new parent record
INSERT INTO parent(parent_data)
SELECT parent_data FROM parent
WHERE parent_id=p_parent_id;
SET new_parent_id=LAST_INSERT_ID();
-- copy child records
INSERT INTO child(child_data,parent_id)
SELECT child_data,new_parent_id FROM child
WHERE parent_id=p_parent_id;
-- copy grandchild records ???
-- return
RETURN new_parent_id;
END
如果這很重要,我正在使用Mysql5.5。
完美地工作,儘管它需要我花一段時間才能完全理解它!我現在使用完整的存儲過程,使用你的代碼,我將在下面添加另一個答案。 – David 2011-04-18 23:10:26
問題是 - 如何綁定兩個子表以獲取新的child_id。我試圖通過他們的posituin號碼(排名字段)來綁定行。 – Devart 2011-04-19 07:23:10