复制记录我有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