0

単一のスクリプトを使用してデータベースに一連のエントリを作成しようとしていますが、発生している問題は、作成した前のエントリの生成された主キーを参照する方法です。

たとえば、顧客を作成し、その顧客の注文を作成しようとした場合、顧客用に生成された主キーを取得するにはどうすればよいですか?

私はSQLServerを使用しています。

4

3 に答える 3

4

そのようです:

DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = @@IDENTITY;

編集:

トリガーで期待どおりに機能するには、明らかに SCOPE_IDENTITY() である必要があります。

DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = SCOPE_IDENTITY();
于 2009-01-16T00:57:02.230 に答える
4

お使いのバージョンで利用可能な場合は、代わりに SCOPE_IDENTITY() を使用してください。@@IDENTITY よりも安全です。

于 2009-01-16T01:03:42.263 に答える
2

一度に複数の行を挿入する場合は、OUTPUT INTO SQL Server 2005 以降の機能を使用して、すべての ID を取得できます (関連レコードの作成などに使用できます) 。

これにより、ループやカーソルなどを記述する必要がなくなります。

于 2009-01-16T01:40:09.633 に答える