在我的数据库中,所有表都使用了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)
答案 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)