【发布时间】:2011-08-07 21:35:00
【问题描述】:
我有 3 个表格的父、子和孙子表:
+----------------+ +----------------+ +---------------------+
| 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。
【问题讨论】: