MS SQL Server上次插入的ID

时间:2013-05-08 04:50:41

标签: sql sql-server

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

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

如果我在表中插入任何记录,我必须先在Table_ID(自动增量,Table_name)中插入一条记录,然后在我的其他表中使用该自动增量值。

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

我想做这样的事情:

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)

7 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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 

答案 2 :(得分:4)

在插入语句后使用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')

答案 3 :(得分:2)

亲爱的朋友,您必须选择插入的最后一条记录的ID 然后将其传递到另一个表中,以便波纹管代码能够很好地帮助您

Insert INTO TABLE_ID (Table_NAME), Values (Table_Products)
DECLARE @ID int;
set @ID = SCOPE_IDENTITY(); 

Insert INTO Table_Products (ID, Product_Name) 
Values (@ID, SomeProduct)

此代码将解决您的问题我为您的上一个记录ID定义@ID,然后将其插入您的其他表

答案 4 :(得分:1)

对于MySql,请使用select LAST_INSERT_ID();

答案 5 :(得分: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');

答案 6 :(得分:-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)