|
|
|
@ -339,6 +339,18 @@ SELECT * FROM PKTABLE; |
|
|
|
|
0 | Test4 |
|
|
|
|
(4 rows) |
|
|
|
|
|
|
|
|
|
DROP TABLE FKTABLE; |
|
|
|
|
DROP TABLE PKTABLE; |
|
|
|
|
-- |
|
|
|
|
-- Check initial check upon ALTER TABLE |
|
|
|
|
-- |
|
|
|
|
CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, PRIMARY KEY(ptest1, ptest2) ); |
|
|
|
|
CREATE TABLE FKTABLE ( ftest1 int, ftest2 int ); |
|
|
|
|
INSERT INTO PKTABLE VALUES (1, 2); |
|
|
|
|
INSERT INTO FKTABLE VALUES (1, NULL); |
|
|
|
|
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL; |
|
|
|
|
ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" |
|
|
|
|
DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. |
|
|
|
|
DROP TABLE FKTABLE; |
|
|
|
|
DROP TABLE PKTABLE; |
|
|
|
|
-- MATCH SIMPLE |
|
|
|
@ -1607,6 +1619,11 @@ INSERT INTO fk_partitioned_fk (a,b) VALUES (NULL, NULL); |
|
|
|
|
INSERT INTO fk_notpartitioned_pk VALUES (1, 2); |
|
|
|
|
CREATE TABLE fk_partitioned_fk_full (x int, y int) PARTITION BY RANGE (x); |
|
|
|
|
CREATE TABLE fk_partitioned_fk_full_1 PARTITION OF fk_partitioned_fk_full DEFAULT; |
|
|
|
|
INSERT INTO fk_partitioned_fk_full VALUES (1, NULL); |
|
|
|
|
ALTER TABLE fk_partitioned_fk_full ADD FOREIGN KEY (x, y) REFERENCES fk_notpartitioned_pk MATCH FULL; -- fails |
|
|
|
|
ERROR: insert or update on table "fk_partitioned_fk_full" violates foreign key constraint "fk_partitioned_fk_full_x_fkey" |
|
|
|
|
DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. |
|
|
|
|
TRUNCATE fk_partitioned_fk_full; |
|
|
|
|
ALTER TABLE fk_partitioned_fk_full ADD FOREIGN KEY (x, y) REFERENCES fk_notpartitioned_pk MATCH FULL; |
|
|
|
|
INSERT INTO fk_partitioned_fk_full VALUES (1, NULL); -- fails |
|
|
|
|
ERROR: insert or update on table "fk_partitioned_fk_full_1" violates foreign key constraint "fk_partitioned_fk_full_x_fkey" |
|
|
|
|