Из того, что вы опубликовали, нет недопустимого типа данных (по крайней мере, я не вижу ни одного), но отсутствует первичный или уникальный ключ - вы не можете создать ограничение внешнего ключа, которое не укажите на один из этих ключей.
Посмотрите: во-первых, таблица пустышка FACILITY
, измененная, как вы это сделали:
SQL> CREATE TABLE facility (id NUMBER);
Table created.
SQL> ALTER TABLE facility ADD manager_email VARCHAR2 (100);
Table altered.
Создать таблицу CLUBMANAGER
:
SQL> CREATE TABLE clubmanager
2 (
3 email VARCHAR2 (100) NOT NULL,
4 name VARCHAR2 (100) NOT NULL,
5 phonenum NUMBER (10) NOT NULL,
6 CONSTRAINT clubmanager_pkey PRIMARY KEY (email),
7 CONSTRAINT clubmember_fkey FOREIGN KEY
8 (email)
9 REFERENCES facility (manager_email)
10 );
REFERENCES facility (manager_email)
*
ERROR at line 9:
ORA-02270: no matching unique or primary key for this column-list
Нет, не будет работать. Добавьте уникальный ключ и ящик CLUBMANAGER
еще раз:
SQL> ALTER TABLE facility ADD CONSTRAINT pk_fac UNIQUE (manager_email);
Table altered.
SQL> CREATE TABLE clubmanager
2 (
3 email VARCHAR2 (100) NOT NULL,
4 name VARCHAR2 (100) NOT NULL,
5 phonenum NUMBER (10) NOT NULL,
6 CONSTRAINT clubmanager_pkey PRIMARY KEY (email),
7 CONSTRAINT clubmember_fkey FOREIGN KEY
8 (email)
9 REFERENCES facility (manager_email)
10 );
Table created.
SQL>
Как видите, все в порядке. Если он по-прежнему не работает на вашей стороне, пожалуйста, опубликуйте свой собственный сеанс SQL * Plus, чтобы мы могли увидеть, что вы сделали и как отреагировал Oracle.