在使用 Postgres (psycopg) 连接时,我试图更好地理解“自动提交”的概念。假设我有一个新连接,将其隔离级别设置为 ISOLATION_LEVEL_AUTOCOMMIT,然后直接运行此 SQL,而不使用游标开始/回滚方法(作为练习;并不是说我真的想这样做):
INSERT A
INSERT B
BEGIN
INSERT C
INSERT D
ROLLBACK
插入 C 和 D 会发生什么?
自动提交是否纯粹是 psycopg 中的一个内部设置,会影响它如何发出 BEGIN?在这种情况下,上述 SQL 不受影响;插入 A 和 B 完成后立即提交,而 C 和 D 在事务中运行并回滚。该事务在什么隔离级别下运行?
还是自动提交是连接本身的真实设置?在那种情况下,它如何影响BEGIN的处理?它被忽略了,还是覆盖了自动提交设置以实际启动事务?该事务在什么隔离级别下运行?
还是我完全脱靶?