2016-04-22 66 views
0

我想说明的是,funtom_customer表的外键的funtom_employee表“这里不允许约束规范” ......约束错误在创建表:

create table Funtom_customer 
(
    cust_ID   number(3) constraint cust_ID primary key, 
    cust_Name  varchar2(50) constraint cust_Name not null, 
    cust_Contact varchar2(50), 
    cust_Acmanager number(3) 
     CONSTRAINT cust_Acmanager FOREIGN KEY (funtom_employee), 
    cust_Addr1  varchar2(50), 
    cust_Addr2  varchar2(50), 
    cust_Addr3  varchar2(50), 
    cust_Addrpc  varchar2(10) 
); 
+1

该语法错误。哪个表和列是主键,你的外键应该引用? –

+0

你确定它没有落在'约束cust_Name不为空'上。你没有允许命名'not null'约束,我猜想你想引入一个独特的约束,并把它完成了一半? –

+0

@Damien_The_Unbeliever - 实际上,你可以;我不认为你可以,但那部分是有效的。它甚至不介意约束名称与列名称相同。 –

回答

0
create table Funtom_customer 
(
cust_ID  number(3) not null, 
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) 
) 
; 


alter table Funtom_customer add constraint pk_cust_ID primary key (cust_ID); 
alter table Funtom_customer add constraint fk_cust_Acmanager foreign key (cust_Acmanager) references funtom_employee(referenced_col); 
+0

在第二个改变我现在得到一个错误,说缺少左括号?谢谢您的帮助! –

+0

您也需要在本地表中为FK指定列名。 –

+0

我不知道你引用的专栏名称,这就是为什么我将它命名为“referenced_col” – Thomas

1

你的语法在几个方面是畸形的。假设在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) 
); 

...这将导致系统生成的约束名称,或指定的,超出作为命名约束:

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显示之后添加约束条件。

你可以命名一个非空约束,但它不常见;你也可以有一个命名约束来检查列是否为空,但是它不会在数据字典中显示为不可空(例如当你描述表时)。

+0

现在完美工作感谢您的帮助 –