外键约束上的数据类型错误无效

时间:2017-04-14 22:02:27

标签: sql oracle

我在第二个查询的最后一行收到错误,在分号前说operator_class是外键的无效数据类型,为什么我收到此错误?

CREATE TABLE Qualification(
   operator_class VARCHAR(2) NOT NULL PRIMARY KEY
  ,description VARCHAR2(80) NOT NULL
);

CREATE TABLE Vehicle_Type(
   type   VARCHAR2(20) NOT NULL PRIMARY KEY
  ,capacity NUMBER(3,0)
  ,fuel   VARCHAR2(10),
  operator_class VARCHAR2(2) NOT NULL,
  constraint foreign key (operator_class) references Qualification(operator_class)
);

2 个答案:

答案 0 :(得分:0)

varchar(2)varchar2(2)的类型不同。 Oracle建议(仍然)varchar2(),因此将第一个表更改为:

CREATE TABLE Qualification (
   operator_class VARCHAR2(2) NOT NULL PRIMARY KEY,
-------------------------^
   description VARCHAR2(80) NOT NULL
);

答案 1 :(得分:0)

创建表格资格(    operator_class VARCHAR2(2)NOT NULL PRIMARY KEY   ,description VARCHAR2(80)NOT NULL );

CREATE TABLE Vehicle_Type(    type VARCHAR2(20)NOT NULL PRIMARY KEY   ,容量NUMBER(3,0)   ,燃料VARCHAR2(10),   operator_class VARCHAR2(2)NOT NULL,   约束constraint_name_FK外键(operator_class)引用Qualification(operator_class) );

添加约束名称“constraint_name_FK”解决了我的错误