我有一棵树的手机型号和价格。目前,我正在遍历每个模型,并将它们插入数据库中,获取ID,将其设置为价格的parent_id
,然后插入价格。
随着手机型号和价格的上涨,这将变得越来越慢。
是否可以进行批量插入,但是可以让我获取当前查询中的最后一个增量ID?
例如
insert into my_table ('name', 'value', 'parent_id') values
('model', 'apple', 0),
@@parent_id = last_insert_id,
('iphone5s', '5.99', @@parent_id),
('iphoneX', '15.99', @@parent_id),
答案 0 :(得分:0)
使用Scope_identity(),首先声明一个变量,然后将最后一个标识值分配给变量。
DECLARE @i_LastIdentVal INT,
@@parent_id INT
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO my_table (
name,
value,
parent_id
)
VALUES ('model', 'apple', 0),
('iphone5s', '5.99', @@parent_id),
('iphoneX', '15.99', @@parent_id)
SELECT @i_LastIdentVal = Scope_identity()
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE
@ErrorMessage NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (
@ErrorMessage,
@ErrorSeverity,
@ErrorState
);
ROLLBACK TRANSACTION
END CATCH
请注意确保插入表应该早先创建了Identity列