尝试在sql oracle 11g中创建一个表

时间:2018-05-03 00:41:06

标签: sql oracle11g

我试图创建一个表,但它一直给我错误消息"无效的标识符",我一遍又一遍地搜索,无法弄清楚错误是什么用我的代码.....请帮助.....这里是我的代码..

create table ownership
(
   oID number not null,
   dID number not null,
   start date,
   end date,
   primary key (oID,dID)
   foreign key (oID) references owner(oID),
   foreign key (dID) references dogs(dID)
);
我从nyc打开数据导入狗表,我也创建了所有者表.....表名没有错,我一遍又一遍地检查,表所有者的oID是主键,所以dID在表狗.....我试图删除不是空约束,同样的错误消息,我试图在主键之前放置约束pk_ownership,仍然得到相同的错误消息.....我真的无法弄清楚为什么... 这是一个学校项目,我是sql的超级新手,它是我第二天做sql的......如果我的问题是愚蠢的,请袒露我.....谢谢!

2 个答案:

答案 0 :(得分:2)

您有两个主要错误:

  • 你错过了一个逗号(在小学上)
  • start是保留字

end也是一个关键字,所以我也不鼓励使用它。

我会建议像:

create table ownership (
   oID number not null,
   dID number not null,
   ownership_start date,
   ownership_end date,
   primary key (oID, dID),
   foreign key (oID) references owner(oID),
   foreign key (dID) references dogs(dID)
);

答案 1 :(得分:1)

在Oracle start中是一个保留字。如果引用它,您可以使用它,如:

create table ownership
(
   oID number not null,
   dID number not null,
   "start" date,
   end date,
   primary key (oID,dID),
   foreign key (oID) references owner(oID),
   foreign key (dID) references dogs(dID)
);

或者......您可以使用其他名称,例如start_ownership

P.S。:您还有一个小的语法错误。您在主键定义的末尾忘记了逗号。