On Mon, Dec 03, 2001 at 10:31:11AM -0800, Rob Messer wrote:
> Joern,
>
> Perhaps more detail on your original example would be useful. I know
> from working with Oracle that if you feed it an insert with a primary key
> violation in the middle of a transaction, it will abort the transaction
> and rollback, just like PostgreSQL.
I don't think that's correct. I just wrote a quick test script, which
connects to an Oracle database with AutoCommit and RaiseError off and
PrintError on, inserts two rows with the same primary key into a table,
then calls commit. An error is printed for the second insert; the first
insert is commited, not rolled back.
> As your original example was provided, it didn't really seem to
> be a PostgreSQL issue. In your new example, if you put everything in an eval
> loop and have a commit after each insert then it should work ok:
>
> eval {
> insert...
> commit
> };
> if ($@) {
> check for type of error
> do update if appropriate
> }
There wouldn't be much point in turning off AutoCommit if you had to commit
after every statement anyway, would there?
Ronald