我想创建一个从3个表复制数据的存储过程。这些是3个表格的结构:
Quotes
Quote_id integer, note varchar(50)
Quote_id是主键,使用触发器自动递增
Windows
Win_id integer, quote_id integer
Win_id是主键(使用触发器自动递增),这里Quote_id是引用表的FK
Win_links
Links_id integer, win_id integer, linked_win_id integer, edge_name varchar(30)
Links_id是主键(使用触发器自动递增),win_id和linked_win_id都是FK到windows表。
我像这样创建了SP:
create or alter procedure COPY_QUOTE_PROC (
P_QUOTE_ID integer)
As
declare variable V_LAST_INSERTED_QUOTE_ID integer;
declare variable V_OLD_WIN_ID integer;
begin
insert into quotes (note) select note from quotes where quotes.quote_id = :P_QUOTE_ID
returning QUOTE_ID into :v_last_inserted_quote_id;
FOR select WIN_ID from windows
where (windows.quote_id = :p_quote_id)
into :V_OLD_WIN_ID
do begin
insert into windows (quote_id) select :v_last_inserted_quote_id from windows where WIN_ID = :v_old_win_id
end
用于将一个引号中的窗口链接在一起的第三个表例如win_id = 5和linked_win_id = 6另一个记录可以具有相同的窗口但链接到不同的窗口,例如win_id = 5和linked_win_id = 7等等。
现在我如何复制第三个表win_links
,使其正确指向新复制的窗口?