関数Scope_Identity()は、テーブル挿入から最後に生成された主キー値を提供します。セットの挿入から複数のキーを取得する一般的に受け入れられている方法(選択クエリの結果としての挿入)はありますか?SQL Serverを使用してテーブル挿入から複数の新しく作成されたキー値を取得する最も良い方法は?
1
A
答えて
1
SQL Server 2005以降では、OUTPUT clauseを使用して、返された値のセットを取得できます。リンク先の記事から:
次の例では、 EmployeeSalesテーブルを作成し、 にSELECT文でINSERT 文を使用して、それに 複数の行を挿入するソース表からデータを取り出します。 EmployeeSalesテーブルには、 識別列(EmployeeID)と 計算列(ProjectedSales)が含まれています。 挿入操作中にSQL Serverデータベースエンジンによってこれらの値が生成されるため、これらのいずれの 列も@MyTableVarで定義できません。
USE AdventureWorks ;
GO
IF OBJECT_ID ('dbo.EmployeeSales', 'U') IS NOT NULL
DROP TABLE dbo.EmployeeSales;
GO
CREATE TABLE dbo.EmployeeSales
(EmployeeID int IDENTITY (1,5)NOT NULL,
LastName nvarchar(20) NOT NULL,
FirstName nvarchar(20) NOT NULL,
CurrentSales money NOT NULL,
ProjectedSales AS CurrentSales * 1.10
);
GO
DECLARE @MyTableVar table(
LastName nvarchar(20) NOT NULL,
FirstName nvarchar(20) NOT NULL,
CurrentSales money NOT NULL
);
INSERT INTO dbo.EmployeeSales (LastName, FirstName, CurrentSales)
OUTPUT INSERTED.LastName,
INSERTED.FirstName,
INSERTED.CurrentSales
INTO @MyTableVar
SELECT c.LastName, c.FirstName, sp.SalesYTD
FROM HumanResources.Employee AS e
INNER JOIN Sales.SalesPerson AS sp
ON e.EmployeeID = sp.SalesPersonID
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.EmployeeID LIKE '2%'
ORDER BY c.LastName, c.FirstName;
SELECT LastName, FirstName, CurrentSales
FROM @MyTableVar;
GO
SELECT EmployeeID, LastName, FirstName, CurrentSales, ProjectedSales
FROM dbo.EmployeeSales;
GO
0
行数と最後のID値を使用します....
DECLARE @LastID int
DECLARE @Rows int
--your insert from a select here
SELECT @[email protected]@IDENTITY, @[email protected]@ROWCOUNT
--set of rows you want...
SELECT * FROM YourTable Where TableID>@[email protected] AND TableID<[email protected]
関連する問題
- 1. SQL Serverトリガーから挿入された値を使用してログインを作成
- 2. 新しい値を挿入する最も良い方法
- 3. テーブルから値を取り出して新しいテーブルに挿入するストアドプロシージャを作成する方法
- 4. 別のテーブルから値と列名を取得してSQL Serverテーブルに値を挿入する方法
- 5. .NET 4.0のアプリケーションから複数の行をSQL Server 2008データベースに挿入する最も良い方法
- 6. LINQを使用してテーブルから最後に挿入された行を取得する方法は?
- 7. Oracle - 新しく挿入されたキー値を返します
- 8. シェルスクリプトを使用してダイナモdbテーブルを作成する最も良い方法
- 9. 新しく挿入された行のIDを取得する方法は?
- 10. SQL Server:テーブルに挿入する前に値を確認する最も良い方法
- 11. 複合キーを使用したSQL Serverテーブルの更新
- 12. SQL Serverテーブルの新しく追加されたレコードからID番号を取得する方法は? (asp.net)
- 13. SQLテーブルからデータを取得して別のテーブルに挿入する方法
- 14. SQL Serverでテーブルを作成し、csvからデータを挿入
- 15. テーブルを返す関数から複数の値を挿入する - SQL SERVER
- 16. 重複したテーブルから最も最近作成された行のみを選択してください
- 17. ストアドプロシージャを使用してSQL Serverテーブルに重複レコードが挿入される
- 18. あるSQL Serverから別のSQL Serverにテーブルを転送する最も良い方法は何ですか?
- 19. SQLデータベースから複数の列を取得し、HTMLで表示する最も良い方法は?
- 20. PHPを使用してデータベースから最後に作成されたテーブル名を取得する方法
- 21. SQLを使用してSQL Serverテーブル関数を作成する
- 22. 外部キーを使用したSQL Serverテーブルの作成
- 23. 新しいテーブルを作成中に別のテーブルから値を挿入する
- 24. Immutable.jsから複数のネストされたキーを削除する最も良い方法は何ですか?
- 25. SQL ServerでSub-SELECTを使用して外部キーを挿入する方法
- 26. Excel VBAを使って新しく挿入されたレコードのIDを取得する方法は?
- 27. 新しいテーブルを作成して別のテーブルからデータを挿入する
- 28. iSeriesテーブルにColdFusionアプリケーション生成ID値を挿入する最も良い方法は何ですか?
- 29. 外部キーを使用して複数のテーブルに挿入
- 30. SQL挿入クエリから新しいレコードの主キーIDを取得して、同じ値を別のテーブルに挿入しますか?
パーフェクト。 OUTPUTについて知りませんでした。 – dudeNumber4