3つの挿入ストアドプロシージャがありますSP 2つの異なるテーブルにデータを挿入します
Table 1 Table 2
idPerson idProduct
name productName
phoneNumber productdescription
FK-idProduct
表1のSP SP
create procedure test1 create procedure test2
WITH WITH
EXECUTE as caller EXECUTE as caller
AS AS
declare declare
@idPerson int, @idProduct int,
@name varchar(20), @productName varchar(50),
@phone varchar(20) @productoDescription varchar(50)
SET nocount on; SET nocount on;
Begin Begin
insert into table1( insert into table2(
idPerson, idProduct,
name, productName,
phone) productDescription)
values( values(
@idPerson, @idProduct,
@name, @productName,
@phone) @productDescription)
end end
ストアドプロシージャテスト1からストアドプロシージャテスト2を呼び出して、テーブル1にFK-IDを挿入する必要があります。
単にtest2
from test1
好む:
EXEC test2 @newId, @prod, @desc;
@id
使用:
SELECT @newId = @@SCOPE_IDENTITY
OUTPUTパラメーターをtest2に追加し、INSERTの直後に新しいIDに設定できます:
SELECT @NewIdOutputParam = SCOPE_IDENTITY()
次に、test1で次のように取得します。
DECLARE @NewId INTEGER
EXECUTE test2 @NewId OUTPUT
-- Now use @NewId as needed
まず、_table2
_のidProductがIDである場合、そのテーブルに_IDENTITY_INSERT
_を設定するまで明示的に挿入することはできません
_SET IDENTITY_INSERT table2 ON;
_
挿入前。
したがって、2つのうちの1つは、2番目に格納されたものを変更し、パラメータproductName
およびproductDescription
のみで呼び出してから、新しいIDを取得します。
_EXEC test2 'productName', 'productDescription'
SET @newID = SCOPE_IDENTIY()
_
または、すでに製品のIDがあり、SCOPE_IDENTITY()
を呼び出す必要はなく、そのIDで_table1
_に挿入できます