I have tested this and i got an error all the time or i get waiting for lock 
depending on transaction settings.
I do the following:

CREATE TABLE A
(
ID BIGINT NOT null PRIMARY KEY
);

CREATE TABLE B
(
ID BIGINT NOT null PRIMARY KEY,
ID_A BIGINT NOT NULL
);

ALTER TABLE B ADD constraint FK_B__A FOREIGN KEY(ID_A) REFERENCES A(ID) ON 
UPDATE CASCADE ON DELETE CASCADE;

tx1 starts (read commited)
tx1 INSERT INTO A (ID) VALUES (1);
tx2 starts (snapshot isolation)
tx1 commits
tx2 INSERT INTO B (ID, ID_A) VALUES (1, 1);
tx2 commits – i have an error here! violation of FOREIGN KEY constraint 
"FK_B__A" on table "B" Foreign key reference target does not exist Problematic 
key value is ("ID_A" = 1)
or transaction wait if i specifi wait for locks.

I have also create empty triggers but no change
I suppose you do someting different. Please describe exact steeps to reproduce 
this.

Regards,
Karol Bieniaszewski
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to