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

时间:2017-07-24 07:46:47

标签: sql sql-server database vb.net client-server

enter image description here

这是我的表格结构

当我将数据插入第一个表时,它将在表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');

代码适用于单台计算机,但是当我们在多个终端的应用程序中使用时,它会插入错误的数据,即表2中另一个id的数据

1 个答案:

答案 0 :(得分:3)

您需要确保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值,这就是您的第二个插入内容混合数据的原因。