The following bug has been logged online: Bug reference: 3910 Logged by: Dmitry Afanasiev Email address: [EMAIL PROTECTED] PostgreSQL version: 7.4.19 Operating system: FreeBSD 7.0 / 5.5 Description: Incorrect behavior of UPDATE statement on tables with constraints UNIQUE/PRIMARY KEY Details:
Constraints must be checked AFTER updating ALL of rows, but really after every row. For illustrate try this simple sql script: CREATE TABLE n(n INTEGER PRIMARY KEY); INSERT INTO n VALUES(1); INSERT INTO n VALUES(2); INSERT INTO n VALUES(3); UPDATE n SET n = n + 1; SELECT * FROM n; DROP TABLE n; On UPDATE psql says about violation UNIQUE constraint and does't update anything. For example, in Oracle all works propertly, and result of SELECT is: SQL> select * from n; N ---------- 2 3 4 ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match