9

私のデータベースでは、すべてのテーブルが Sequence(ID_Table) に共通のテーブルを使用しています。

TABLE_ID には 2 つのフィールド (Common_ID、Table_Name) があります。

テーブルにレコードを挿入する場合、最初に Table_ID(Auto-increment, Table_name) にレコードを挿入してから、その Auto-increment 値を他のテーブルで使用する必要があります。

たとえば、フィールド ID(Common_ID)、Product_Name、Product_ID(Auto Increment) を持つ Table_Products に挿入したい

私はこのようなことをしたい:

INSERT INTO TABLE_ID (Table_NAME), Values (Table_Products)

挿入された ID を取得し、Table_Products で使用します。

INSERT INTO Table_Products (ID, Product_Name, Product_ID(Auto Increment) 
VALUES (ID from TABLE_ID, SomeProduct, Increment)
4

7 に答える 7

29

これを試してみてください -

DECLARE @ID BIGINT

INSERT INTO dbo.TABLE_ID (Table_NAME) 
SELECT 'Table_Products'

SELECT @ID = SCOPE_IDENTITY()

INSERT INTO dbo.Table_Products (ID, Product_Name)
SELECT @ID, 'SomeProduct'
于 2013-05-08T04:56:36.040 に答える
4

最後に挿入された ID を取得するには、insert ステートメントの後に SCOPE_IDENTITY() を使用します。

DECLARE @Product_Id int

INSERT INTO TABLE_ID (Table_NAME) VALUES (Table_Products);
SELECT @Product_Id=SCOPE_IDENTITY();

Insert INTO Table_Products (ID, Product_Name)
VALUES (ID from TABLE_ID, 'SomeProduct')
于 2013-05-08T04:55:45.673 に答える
1

MySql 用select LAST_INSERT_ID();

于 2013-11-30T11:32:29.677 に答える
0

これまでの他のすべての回答は、 の中間変数を宣言していますSCOPE_IDENTITY()が、もっと簡単になる可能性があります。

INSERT INTO dbo.TABLE_ID (Table_NAME) VALUES 'Table_Products';

INSERT INTO dbo.Table_Products (ID, Product_Name) VALUES (SCOPE_IDENTITY(),'SomeProduct');
于 2016-07-07T17:26:18.757 に答える
-1

IDENT_CURRENT() を使用して、よりテーブル固有にすることもできます

Insert INTO TABLE_ID (Table_NAME), Values (Table_Products)

select @NewID=IDENT_CURRENT('TABLE_ID')

Insert INTO Table_Products (ID, Product_Name, Product_ID
Values (@NewID, SomeProduct, Increment)
于 2013-05-08T05:07:10.710 に答える