【问题标题】:How do I know which transactions run first我如何知道哪些事务首先运行
【发布时间】:2020-02-27 11:46:45
【问题描述】:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

INSERT INTO Students VALUES(’Jason’,50);

UPDATE Students SET mark = mark + 10;

COMMIT

SET TRANSACTION ISOLATION READ COMMITED

INSERT INTO Students VALUES (’Kylie’,70);

SELECT SUM(mark) FROM Students;

COMMIT

如果我有两个同时运行的事务,我如何知道首先运行什么以及查询将返回什么值?我知道 Serializable 隔离了 T1。但除此之外,我不知道如何进行。

【问题讨论】:

    标签: mysql database transactions isolation-level transaction-isolation


    【解决方案1】:

    如果您同时运行两者,READ COMMITTED 将等待SERIALIZABLE 完成。顺便说一句,您的TSQL 上似乎缺少BEGIN TRANSACTION

    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    BEGIN TRANSACTION
       INSERT INTO Students VALUES(’Jason’,50);
       UPDATE Students SET mark = mark + 10;
    COMMIT TRANSACTION
    
    SET TRANSACTION ISOLATION READ COMMITTED
    BEGIN TRANSACTION
       INSERT INTO Students VALUES (’Kylie’,70);
       SELECT SUM(mark) FROM Students;
    COMMIT TRANSACTION
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      相关资源
      最近更新 更多