Foreign key constaint can be broken
От | Mark Kazemier |
---|---|
Тема | Foreign key constaint can be broken |
Дата | |
Msg-id | ace5c7fc1001260521t6df2534n8435e77f897695a9@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Foreign key constaint can be broken
|
Список | pgsql-bugs |
Dear, I found a way to break a foreign key constraint in PostgreSQL. I discussed this bug on a dutch discussion board and multiple people tried this on multiple versions. When I create the following tables: CREATE TABLE a ( id SERIAL NOT NULL, foo CHAR(100) NOT NULL, PRIMARY KEY(id) ); CREATE TABLE b ( id INT NOT NULL, bar CHAR(20) NOT NULL, PRIMARY KEY(id), FOREIGN KEY(id) REFERENCES a(id) ON DELETE CASCADE ); and add the following rule to table b: CREATE OR REPLACE RULE delete_b AS ON DELETE TO b DO INSTEAD DELETE FROM a WHERE OLD.id = id; When you try to delete a row on table b: DELETE FROM b WHERE id = 1; The record from table a disappears, but the record in table b is still there. Of course this is a very stupid construction, but I would expect some kind of error / warning message instead. Now it is possible to corrupt your data. Best regards, Mark Kazemier
В списке pgsql-bugs по дате отправления: