Hi,

When running an update that fails with an unique constraint violation, the 
row that I tried to update "disappears" for the remainder of the 
transaction. I cannot select it using its primary key or using the column 
that gave the constraint violation.

Pseudo-SQL (all run within the same transaction):
CREATE TABLE foo (row_id INTEGER PRIMARY KEY, unique_val INTEGER UNIQUE, 
some_other_val INTEGER);
INSERT INTO foo VALUES (1, 1, 1);
INSERT INTO foo VALUES (2, 2, 2);

-- Gives a constraint violation
UPDATE foo SET unique_val = 1 WHERE row_id = 2;

-- The row that failed to update is no longer found by its old values
SELECT unique_val FROM foo WHERE row_id = 2;
SELECT unique_val FROM foo WHERE unique_val = 2;

-- both SELECTs above fail to find anything...

-- ...but this works
SELECT unique_val FROM foo WHERE some_other_val = 2;

I have a PasteBin with Groovy code in it:

http://pastebin.com/d6sXAcPP

Run it using
[Groovy installation]/bin/groovy [path to script]

I'm using H2 version 1.4.177.

Regards
/Karl

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to