Мы можем определить значения по умолчанию для столбцов при создании таблиц ...
SQL> create table t34 (
2 id number not null
3 , col1 varchar2(30) default user
4 , col2 date default sysdate
5 , col3 char(1) default 'N' )
6 /
Table created.
SQL>
Эти значения применяются автоматически, если мы ничего не указываем:
SQL> insert into t34
2 (id)
3 values
4 (1)
5 /
1 row created.
SQL>
В качестве альтернативы, если мы хотим указать некоторые значения, но не другие, мы можем использовать ключевое слово DEFAULT
SQL> insert into t34
2 values
3 (2, null, default, 'Y')
4 /
1 row created.
SQL> select * from t34
2 /
ID COL1 COL2 C
---------- ------------------------------ --------- -
1 APC 27-APR-10 N
2 27-APR-10 Y
SQL>
Мы можем найти значения по умолчанию в представлении словаря данных USER_TAB_COLUMNS. К сожалению, DATA_DEFAULT относится к отвратительному типу данных LONG, что снижает его удобство использования.
SQL> select column_name, data_default
2 from user_tab_columns
3 where table_name = 'T34'
4 /
COLUMN_NAME DATA_DEFAULT
------------------------------ ------------------------------
ID
COL1 user
COL2 sysdate
COL3 'N'
SQL>
Переопределить значения
Хранить набор значений переопределения - альтернативных значений по умолчанию - сложнее. Боюсь, что использованный вами внешний ключ не является начальным, поскольку мы не можем ссылаться на метаданные словаря данных в данных нашего приложения.
Мне не совсем понятно, какую бизнес-проблему вы пытаетесь решить, поэтому немного сложно предложить альтернативы. Но для большинства подходов, вероятно, потребуется динамический SQL.