MS SQL Server上次插入的ID

use*_*661 9 sql sql-server

在我的数据库中,所有表都使用Sequence的公共表(ID_Table).

TABLE_ID有两个字段(Common_ID,Table_Name).

如果我插入表中的任何记录,我要在表ID(自动递增,表名)首先插入一条记录,然后用在我的其他表自动递增值.

例如,我想插入Table_Products,其中包含字段ID(Common_ID),Product_Name,Product_ID(Auto Increment)

我想做这样的事情:

INSERT INTO TABLE_ID (Table_NAME), Values (Table_Products)
Run Code Online (Sandbox Code Playgroud)

获取插入的ID并在Table_Products中使用它:

INSERT INTO Table_Products (ID, Product_Name, Product_ID(Auto Increment) 
VALUES (ID from TABLE_ID, SomeProduct, Increment)
Run Code Online (Sandbox Code Playgroud)

Dev*_*art 28

试试这个 -

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'
Run Code Online (Sandbox Code Playgroud)


Max*_*mus 6

在插入语句后使用 SCOPE_IDENTITY() 来获取最后插入的 id。

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')
Run Code Online (Sandbox Code Playgroud)


And*_*mar 5

您可以使用insert带有该output子句的语句来生成新的Common_ID.使用insert ... select,您可以在插入操作中指定该ID:

declare @Common_ID as table(ID int)

insert  Table_ID
        (Table_Name)
output  inserted.Common_ID into @Common_ID
values  ('Table_Products')

insert  Table_Products
        (ID, Product_Name)
select  ID
,       'Some Product'
from    @Common_ID 
Run Code Online (Sandbox Code Playgroud)