如何在 Sql 中为 Insert 命令锁定多个表

How to Lock multiple tables for Insert command in Sql

这是我的table结构

当我将数据插入第一个 table 时,它将在 table 2 中有多个条目 我正在使用代码 获取 ID

Select MAX(ID)+1 From Table1

插入数据

    Insert Into Table1 Values('1','abc','add1');
    Insert into table2 values('1','med','english');
    Insert into table2 values('1','eng','english');

代码在单台计算机上运行良好,但是当我们在多个终端的应用程序中使用时,它插入了错误的数据,即 table2

中另一个 id 的数据

您需要确保table1的ID列是一个标识列,然后执行以下操作:

DECLARE @ID INT

INSERT table1 ([columns])
VALUES (...)

SELECT @ID = SCOPE_IDENTITY()

INSERT table2 (table1ID, [columns])
VALUES (@ID, ...)

您可以阅读更多关于 SCOPE_IDENTITY() here

MAX(ID) 将包括由其他进程创建的 ID 值,这就是您的第二个插入混淆数据的原因。