他のテーブルの関連データを含むデータベース エントリのクローンを作成し、それに新しい ID を割り当てるコードを作成する必要があります。簡略化すると、IDのキーを持つMAINテーブルと、IDのFKを持つSUB1とMAINの各エントリの複数のレコードを持つサブテーブルがあります。
MAIN の特定の ID のデータを新しいレコードにコピーし、ID を新しい値に更新して、既存のエントリを時間内のスナップショットとして残し、新しいエントリを新しい進行中の作業にできるようにしたいと考えています。
私はストアド プロシージャを使用しようとしていますが、作業を実行するために他の 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
したがって、私の質問は、CopyNewMainRecord から CopyNewSub1Records への IN のように、newID の OUT を取得しても問題ありませんか?
私は現在、DB 管理者によって DB2 環境で SP を作成する権限が付与されるのを待っているので、これを試みるのではなく質問しています。