複数の行を異なるテーブルに挿入する必要があるという要件があります。
まず、ロールが1つのテーブルに存在するかどうかを確認したいので、値をrole
テーブルに挿入してから、関連するテーブルに挿入する必要があります。
ここで私の懸念はroleid
、それが挿入されているかどうかを取得する必要があり、それroleid
だけで値を挿入することです。
これはすべて、1 回のクリックと 1 回のストアド プロシージャで実行する必要があります。
返事を待っています。
前もって感謝します 。
複数の行を異なるテーブルに挿入する必要があるという要件があります。
まず、ロールが1つのテーブルに存在するかどうかを確認したいので、値をrole
テーブルに挿入してから、関連するテーブルに挿入する必要があります。
ここで私の懸念はroleid
、それが挿入されているかどうかを取得する必要があり、それroleid
だけで値を挿入することです。
これはすべて、1 回のクリックと 1 回のストアド プロシージャで実行する必要があります。
返事を待っています。
前もって感謝します 。
@dasblinkenlight が述べたように、マージ機能を使用して挿入または更新を実行できるため、再度説明する必要はありません。
私があなたの質問を正しく理解していれば、単一のストアド プロシージャを使用して複数の行を異なるテーブルに挿入する必要があります (1 回の呼び出しでオブジェクト グラフ全体を永続化するようなものです)。Microsoftが提供する例を拡張すると、次のサンプル コードを使用できます。
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<CustomersAndOrders>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00" />
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00" />
</Customer>
</CustomersAndOrders>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
INSERT INTO [YOUR_TABLE_NAME] ([Column1], [Column2])
SELECT [CustomerID], [ContactName]
FROM OPENXML (@idoc, '/CustomersAndOrders/Customer',1)
WITH ([CustomerID] varchar(10), [ContactName] varchar(20))
INSERT INTO [YOUR_OTHER_TABLE_NAME] ([Column1], [Column2])
SELECT [EmployeeID], [OrderDate]
FROM OPENXML (@idoc, '/CustomersAndOrders/Customer/Order',1)
WITH ([EmployeeID] varchar(10), [OrderDate] varchar(20))