0

我正在创建一个 asp.net 站点,用户在其中提交一些插入到表 1 中的数据,然后我运行一个查询来获取从表 1 创建的条目的 ID,然后将该 ID 插入到表 2 中。问题是,如果有人恰好同时提交,我很容易得到不正确的数据。我假设在数据插入表 2 之前可以锁定表 1,但我不确定该怎么做。任何人都可以提供一些指导吗?我所有的代码都在一个 C# 代码隐藏文件中。我读到你可以用类似下面的方法来做到这一点,但如果可行,它是如何解锁的?

UPDATE table1 WITH (rowlock)
4

1 回答 1

1

您的 ADO 可以调用的示例过程。

/*
create table a (id int identity(1,1) primary key, name varchar(max))
create table b (id int identity(1,1) primary key, ParentID int)
GO

create proc Test as
begin
    declare @parentId int
    begin tran
    begin try
        insert into a(name) values('abc')
        select @parentId = SCOPE_IDENTITY()
        select 'ScopeID',@parentID
        insert into b(ParentID) values(@parentid)
        --Uncomment this to see the rollback happen
        --raiserror ('Testing what will happen if an error occurred to make sure rollback works.',
        --       16, -- Severity.
        --       1 -- State.
        --       );
        commit tran
    end try
    begin catch
        rollback tran
    end catch
end
go
*/

truncate table a --TRUNCATE RESET IDENTITY SEED VALUES (UNLIKE DELETE)
truncate table b
exec Test
select * from a
select * from b
于 2013-06-08T19:16:42.953 回答