referential integrity problem
От | Joseph Artsimovich |
---|---|
Тема | referential integrity problem |
Дата | |
Msg-id | 20020217214854.0D5B51BBCC@mail.dkd.lt обсуждение исходный текст |
Ответы |
Re: referential integrity problem
|
Список | pgsql-general |
Hi, Here is my problem: CREATE TABLE users ( id SERIAL PRIMARY KEY ); CREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INT NOT NULL REFERENCES users ON DELETE CASCADE ); CREATE TABLE orders_log ( order_id INT NOT NULL REFERENCES orders ON DELETE CASCADE, by_user INT REFERENCES users ON DELETE SET NULL ); Now suppose i do: INSERT INTO users DEFAULT VALUES; INSERT INTO orders (user_id) VALUES (currval('users_id_seq')); INSERT INTO orders_log (order_id, by_user) VALUES (currval('orders_id_seq'), currval('users_id_seq')); DELETE FROM users WHERE id=currval('users_id_seq'); That last delete gives me a referential integrity violation error. I've figured out that if I mark the by_user reference as INITIALLY DEFERRED, then it works fine. But I don't understand why it refuses to work as is. I use PostgreSQL 7.1.3
В списке pgsql-general по дате отправления: