24 lines
1.2 KiB
SQL
24 lines
1.2 KiB
SQL
INSERT INTO PROFESOR(cod_pro, nombre) VALUES('JR', 'Juan Ruiz');
|
|
-- Fails here, constraint is INITIALLY IMMEDIATE
|
|
INSERT INTO PROFESOR(cod_pro, nombre) VALUES('JR', 'Javier Pérez');
|
|
ROLLBACK; -- Don't save the first insertion
|
|
|
|
-- Change constraint to be INITIALLY DEFERRED
|
|
ALTER TABLE profesor DROP PRIMARY KEY CASCADE KEEP INDEX;
|
|
ALTER TABLE profesor ADD CONSTRAINT cp_prof PRIMARY KEY(cod_pro) INITIALLY DEFERRED DEFERRABLE;
|
|
-- Because we used CASCADE to DROP the primary key constraint,
|
|
-- we need to restore the FOREIGN KEY in docencia
|
|
ALTER TABLE docencia
|
|
ADD CONSTRAINT ca_doc_prof
|
|
FOREIGN KEY(cod_pro) REFERENCES profesor(cod_pro) INITIALLY IMMEDIATE DEFERRABLE;
|
|
|
|
INSERT INTO PROFESOR(cod_pro, nombre) VALUES('JR', 'Juan Ruiz');
|
|
INSERT INTO PROFESOR(cod_pro, nombre) VALUES('JR', 'Javier Pérez');
|
|
-- Fails here, constraint is INITIALLY DEFERRED
|
|
COMMIT;
|
|
|
|
-- Restore constraint to initial setting
|
|
ALTER TABLE profesor DROP PRIMARY KEY CASCADE KEEP INDEX;
|
|
ALTER TABLE profesor ADD CONSTRAINT cp_prof PRIMARY KEY(cod_pro) INITIALLY IMMEDIATE DEFERRABLE;
|
|
ALTER TABLE docencia ADD CONSTRAINT ca_doc_prof FOREIGN KEY(cod_pro) REFERENCES profesor(cod_pro) INITIALLY IMMEDIATE DEFERRABLE;
|
|
|