Thread: Transaction bug
If you send a transaction as a single query to the backend, it ignores the commit if the transaction is aborted: Example: testdb=# CREATE TEMP TABLE test(test INT PRIMARY KEY, CONSTRAINT testconstraint CHECK (test > 2) ); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'test_pkey' for table 'test' CREATE TABLE testdb=# START TRANSACTION\; INSERT INTO test VALUES(1)\; COMMIT\; ; ERROR: ExecInsert: rejected due to CHECK constraint "testconstraint" on "test" testdb=# SELECT * FROM test; ERROR: current transaction is aborted, queries ignored until end of transaction block (Tested with PostgreSQL 7.3.4) -- Brage Førland
Brage Førland <brage@zoo.uib.no> writes: > If you send a transaction as a single query to the backend, it ignores the > commit if the transaction is aborted: This is not a bug, it is the intended behavior. An error causes processing of the current querystring to be abandoned. If you don't want that, don't issue the commands in a single querystring. regards, tom lane