提交嵌套事务。 下面的示例创建一个表,生成三个级别的嵌套事务,然后提交该嵌套事务。尽管每个 COMMIT TRANSACTION 语句都有一个 transaction_name 参数,但是 COMMIT TRANSACTION 和 BEGIN TRANSACTION 语句之间没有任何关系。transaction_name 参数仅是帮助阅读的方法,可帮助程序员确保提交的正确号码被编码以便将 @@TRANCOUNT 减少到 0,然后提交外部事务。CREATE TABLE TestTran (Cola INT PRIMARY KEY, Colb CHAR(3)) GO BEGIN TRANSACTION OuterTran -- @@TRANCOUNT set to 1. GO INSERT INTO TestTran VALUES (1, 'aaa') GO BEGIN TRANSACTION Inner1 -- @@TRANCOUNT set to 2. GO INSERT INTO TestTran VALUES (2, 'bbb') GO BEGIN TRANSACTION Inner2 -- @@TRANCOUNT set to 3. GO INSERT INTO TestTran VALUES (3, 'ccc') GO COMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2. -- Nothing committed. GO COMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1. -- Nothing committed. GO COMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0. -- Commits outer transaction OuterTran. GO
下面的示例创建一个表,生成三个级别的嵌套事务,然后提交该嵌套事务。尽管每个 COMMIT TRANSACTION 语句都有一个 transaction_name 参数,但是 COMMIT TRANSACTION 和 BEGIN TRANSACTION 语句之间没有任何关系。transaction_name 参数仅是帮助阅读的方法,可帮助程序员确保提交的正确号码被编码以便将 @@TRANCOUNT 减少到 0,然后提交外部事务。CREATE TABLE TestTran (Cola INT PRIMARY KEY, Colb CHAR(3))
GO
BEGIN TRANSACTION OuterTran -- @@TRANCOUNT set to 1.
GO
INSERT INTO TestTran VALUES (1, 'aaa')
GO
BEGIN TRANSACTION Inner1 -- @@TRANCOUNT set to 2.
GO
INSERT INTO TestTran VALUES (2, 'bbb')
GO
BEGIN TRANSACTION Inner2 -- @@TRANCOUNT set to 3.
GO
INSERT INTO TestTran VALUES (3, 'ccc')
GO
COMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2.
-- Nothing committed.
GO
COMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1.
-- Nothing committed.
GO
COMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0.
-- Commits outer transaction OuterTran.
GO
如果A用户修改某物品状态,则B不能修改和读取该物品状态,但要等待,且能知道Table1中有他需要的该物品状态,等A修改完之后,B马上修改。
该怎么做呢?
不同的事务调用相同的数据,会自动处理吗?
表Table1中存储的是状态数据,一条记录包含一个物品的状态。
如果A用户修改某物品状态,则B不能修改和读取该物品状态,但要等待,且能知道Table1中有他需要的该物品状态,等A修改完之后,B马上修改。
——————————————————————————
SQL SERVER能帮助你完成你的工作