我必須編寫代碼來克隆其他表中的關聯數據的數據庫條目,併爲其分配一個新的ID。簡化我有一個主鍵與ID和子表稱SUB1與FK的ID和主記錄每個條目的多個記錄。
我想將MAIN中特定ID的數據複製到新記錄中,將ID更新爲新值以允許現有條目保留爲時間快照,並且新條目成爲正在進行的新工作。使用SP克隆數據庫記錄的最佳方法
我正在尋找使用存儲過程,我想知道是否有可能/建議有一個高層SP調用其他SP來執行這項工作?
例如
CREATE PROCEDURE CopyNewVersion (IN oldID)
...
BEGIN
--copy main record details for passed in oldID,
--return the new ID thats been allocated
CALL CopyNewMainRecord(IN oldID, OUT newID)
--copy all SUB1 records for oldID to newID
CALL CopyNewSub1Records(IN oldID, IN newID)
--Declare a cursor to return the details in MAIN for newID
END
我看到了CopyNewSub1Records就像這樣
CREATE PROCEDURE CopyNewSub1Records (IN oldID, IN NewID)
...
BEGIN
--select all records in SUB1 with FK oldID
--sp opens a cursor for return
CALL GetSUB1Records(oldID)
for each returned record in the cursor resultset
--insert into SUB1 values(newID, other data for this row,....)
CALL CreateSUB1Record(row details)
END
所以我的問題是,是否可以擁有NEWID從CopyNewMainRecord的OUT如在對CopyNewSub1Records,我可以使用的結果集在調用插入SP時,CopyNewSub1Records中的Get SP有多行循環訪問?
我目前正在等待數據庫管理員被授予在我們的DB2環境中創建SP的權利,因此我爲此要求而不是嘗試這樣做。