oracle序列线程安全可以在其他线程尝试NEXTVAL

时间:2018-02-20 04:46:59

标签: oracle plsql

我知道oracle序列在递增时应该是线程安全的。但是,当只检索当前值时呢?

比如说下面的

BEGIN 
    FOR i IN 1..10 LOOP
        IF i = 1 THEN
            INSERT INTO TABLE1 (COLUMN1, COLUMN2) VALUES (test_seq3.NEXTVAL,'BB');
        ELSE
            INSERT INTO TABLE1 (COLUMN1, COLUMN2) VALUES (test_seq3.CURRVAL,'BB');
        END IF;                
    END LOOP;
END;

如果我在两个不同的线程中运行上述语句,test_seq3可能在第一个循环结束之前递增两次吗?

1 个答案:

答案 0 :(得分:1)

是的,但CURRVAL对于给定的会话将保持一致。

你为什么不尝试看看;你几乎已经写了测试用例。