I will describe the problem by the following scenario.
-
Create a partitioned master table:
CREATE TABLE TEST_MASTER
(
A VARCHAR2(8 BYTE),
B VARCHAR2(8 BYTE),
C VARCHAR2(8 BYTE),
DATUM DATE,
CONSTRAINT TEST_MASTER_PK PRIMARY KEY(A) USING INDEX TABLESPACE EGUB_IND ENABLE VALIDATE
)
COMPRESS FOR OLTP
TABLESPACE EGUB_DAT
LOGGING
PARTITION BY RANGE(DATUM)
INTERVAL ( NUMTOYMINTERVAL(1, 'YEAR') )(
PARTITION CHANGE_LOG_FIRST
VALUES LESS THAN (TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
LOGGING
COMPRESS FOR OLTP)
NOCACHE
RESULT_CACHE (MODE DEFAULT)
NOPARALLEL
ENABLE ROW MOVEMENT; -
Create a partitioned child table as follows:
CREATE TABLE TEST_CHILD
(
A VARCHAR2(8 BYTE) NOT NULL,
B VARCHAR2(8 BYTE),
C VARCHAR2(8 BYTE),
D VARCHAR2(8 BYTE),
CONSTRAINT TEST_CHILD_PK PRIMARY KEY(A) USING INDEX TABLESPACE EGUB_IND ENABLE VALIDATE,
CONSTRAINT TEST_CHILD_RPK FOREIGN KEY(A) REFERENCES TEST_MASTER (A) ENABLE VALIDATE
)
NOCOMPRESS
TABLESPACE EGUB_DAT
LOGGING
PARTITION BY REFERENCE(TEST_CHILD_RPK)(PARTITION CHANGE_LOG_FIRST LOGGING COMPRESS FOR OLTP)
NOCACHE
RESULT_CACHE (MODE DEFAULT)
NOPARALLEL
ENABLE ROW MOVEMENT;
When you now open the script tab for the child table with the script option "List constraints after columns", the foreign key constraint is missing.
Using the option "Single alter table command" ist no solution, because the "Not Null" clause is missing on the foreign key column(s).
The foreign key only misses for partitioned tables. The behavoius is the same in TOAD 14.2 Beta, 14.1 and 13.3.