Postgres (psycopg) 接続を使用する場合の「自動コミット」の概念をよりよく理解しようとしています。新しい接続があり、その分離レベルをISOLATION_LEVEL_AUTOCOMMITに設定し、カーソルの開始/ロールバックメソッドを使用せずにこのSQLを直接実行するとします(演習として;実際にこれをやりたいとは言っていません):
INSERT A
INSERT B
BEGIN
INSERT C
INSERT D
ROLLBACK
INSERT C と D はどうなりますか?
自動コミットは、BEGIN の発行方法に影響する psycopg の純粋な内部設定ですか? その場合、上記の SQL は影響を受けません。INSERT A と B は完了するとすぐにコミットされますが、C と D はトランザクションで実行され、ロールバックされます。そのトランザクションはどの分離レベルで実行されますか?
それとも、自動コミットは接続自体の実際の設定ですか? その場合、BEGIN の処理にどのような影響がありますか? それは無視されますか、それとも実際にトランザクションを開始するために自動コミット設定をオーバーライドしますか? そのトランザクションはどの分離レベルで実行されますか?
それとも完全に的外れですか?