5
在PostgreSQL中并发DELETE / INSERT锁定问题
这很简单,但是我对PG(v9.0)的功能感到困惑。我们从一个简单的表开始: CREATE TABLE test (id INT PRIMARY KEY); 和几行: INSERT INTO TEST VALUES (1); INSERT INTO TEST VALUES (2); 使用我最喜欢的JDBC查询工具(ExecuteQuery),我将两个会话窗口连接到该表所在的数据库。它们都是事务性的(即auto-commit = false)。我们称它们为S1和S2。 每个代码都使用相同的代码: 1:DELETE FROM test WHERE id=1; 2:INSERT INTO test VALUES (1); 3:COMMIT; 现在,以慢速运行此命令,一次在Windows中执行一次。 S1-1 runs (1 row deleted) S2-1 runs (but is blocked since S1 has a write …