Hi,
Right after installting postgres 7.2.1 (from release source) and reading
some chapters of Bruce Momjian's great book I started to play around with a
test database. Now I have a question concerning deferred constraint
checking.
I am new to transactional SQL, so I don't really know, if this should work:
-- create query
BEGIN;
CREATE TABLE friend (name VARCHAR(40) PRIMARY KEY,country CHAR(2) NOT NULL DEFAULT 'AT'
);
CREATE SEQUENCE conn_id_seq;
CREATE TABLE conn (id INTEGER NOT NULL DEFAULT nextval('conn_id_seq'),name VARCHAR(40),CONSTRAINT conn_friend_fkey
FOREIGNKEY(name) REFERENCES friend(name) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY
IMMEDIATE,CONSTRAINTconn_pkey PRIMARY KEY(id)
);
CREATE INDEX conn_name_idx ON conn (name);
INSERT INTO friend VALUES ('Michael Paesold', 'AT');
INSERT INTO conn (name) VALUES ('Michael Paesold');
COMMIT;
-- test
BEGIN;
SET CONSTRAINTS conn_friend_fkey DEFERRED;
DELETE FROM friend WHERE name='Michael Paesold';
INSERT INTO friend VALUES ('Michael Paesold', 'DE');
COMMIT;
I get an error just after the DELETE query. Perhaps I don't understand the
concept of deferred constraint checking. I know that the above query doesn't
make much sense, but I wanted to try these features.
Best Regards,
Michael Paesold