不能外键约束添加到表
CREATE TABLE CUSTOMER
(
CNUM VARCHAR(25) NOT NULL,
CNAME VARCHAR(75) NOT NULL,
CTYPE VARCHAR(20) NOT NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY(CNUM),
CONSTRAINT CHECK_CTYPE CHECK(CTYPE IN('INDIVIDUAL', 'INSTITUTION'))
);
CREATE TABLE CREDIT_TERM
(
CREDITSTATUS VARCHAR(20) NOT NULL,
STARTDATE DATE NOT NULL,
ENDDATE DATE NOT NULL,
CONSTRAINT CREDIT_TERM_PK PRIMARY KEY(CREDITSTATUS)
);
insert into CREDIT_TERM values('ONE-MONTH','15-05-2015','15-06-2015');
insert into CREDIT_TERM values('TWO-MONTH','15-05-2015','15-06-2015');
insert into CREDIT_TERM values('THREE-MONTH','15-05-2015','15-06-2015');
ALTER TABLE CUSTOMER
ADD CONSTRAINT CUSTOMER_FK_CREDITSTATUS
FOREIGN KEY(CREDITSTATUS) REFERENCES CREDIT_TERM(CREDITSTATUS);
我想添加一个外键约束,但我不明白为什么我得到这个错误:不能外键约束添加到表
ERROR at last line :
ORA-00904: "CREDITSTATUS": invalid identifier
你要加入CUSTOMER
表中名为CREDITSTATUS
的外键的外键约束。但是,CUSTOMER
表没有CREDITSTATUS
的外键。
您必须在CUSTOMER
中为CREDITSTATUS
创建外键,然后重新运行最后一行以添加约束。
编辑
使用ALTER TABLE将该列添加到客户:
ALTER TABLE CUSTOMER ADD CREDITSTATUS VARCHAR(20);
文档: http://www.techonthenet.com/oracle/tables/alter_table.php
我该怎么做? – user6235245
好的,如果我们可以说我想为客户表中记录的信用状态添加一个值,那么我该怎么做? – user6235245
@ user6235245 - 带有UPDATE语句 – APC
正如我在评论中指出,您的customer
表没有一个creditstatus
列。你首先需要添加它:
ALTER TABLE customer ADD creditstatus VARCHAR2(20);
然后使它成为一个外键,你已经拥有了声明。
好吧,如果让我说我想为客户表中记录的信用状态添加一个值,我该如何做? – user6235245
您可以在一个声明中添加列和外键约束:
alter table customer add (
creditstatus varchar2(20) constraint customer_fk_creditstatus references credit_term
);
的几个注意事项。首先,我将列定义放在括号中。它可能没有它们,但官方语法似乎需要它们。 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_3001.htm#i2103924
其次,在一个内联约束中(在列级定义,而不是在表级),您不能使用单词FOREIGN KEY。单词REFERENCES已经标识了约束类型。第三,如果您引用被引用表的PRIMARY KEY,则不需要(但您可以根据需要)命名引用表中的引用列。如果你没有命名该列,被引用表的PRIMARY KEY将被默认使用 - 无论如何,这在绝大多数情况下都是你想要的。
您的'客户'表没有'creditstatus'列。你究竟想要做什么? – Mureinik
如何添加信用状态列添加使其参考credit_term – user6235245