Вы синтаксис имеет неправильный характер несколькими способами. Предполагая, что первичный ключ в таблице funtom_employee
называется emp_id
, вы можете либо определить ограничения в линии:
create table funtom_customer
(
cust_id number(3) primary key,
cust_name varchar2(50) not null,
cust_contact varchar2(50),
cust_acmanager number(3) references funtom_employee (emp_id),
cust_addr1 varchar2(50),
cust_addr2 varchar2(50),
cust_addr3 varchar2(50),
cust_addrpc varchar2(10)
);
... который заставит систему генерировать имена ограничений, или указать, вне -line как именованные ограничения:
create table funtom_customer
(
cust_id number(3),
cust_name varchar2(50) not null,
cust_contact varchar2(50),
cust_acmanager number(3),
cust_addr1 varchar2(50),
cust_addr2 varchar2(50),
cust_addr3 varchar2(50),
cust_addrpc varchar2(10),
constraint pk_funtom_customer primary key (cust_id),
constraint fk_funtom_customer_acmanager foreign key (cust_acmanager)
references funtom_employee (emp_id)
);
Вы также можете создать таблицу и добавить ограничения после этого, как показал @Thomas.
Вы можете назвать ограничение, отличное от нуля, но это необычно; вы также можете иметь именованное ограничение, которое проверяет, что столбец не является нулевым, но тогда он не будет отображаться как недействительный в словаре данных (например, когда вы описываете таблицу).
Этот синтаксис просто неправильный. Какая таблица и столбец являются первичными ключами, на которые должен ссылаться ваш внешний ключ? –
Вы уверены, что это не падает на 'ограничение cust_Name не null '. Вы не позволили называть «не null» ограничения, я бы предположил, что вы хотите ввести, возможно, уникальное ограничение и оставили его наполовину законченным? –
@Damien_The_Unbeliever - на самом деле, вы можете; Я не думал, что вы можете это сделать, но эта часть действительна. Он даже не учитывает, что имя ограничения совпадает с именем столбца. –