Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle表创建_Sql_Oracle_Oracle10g_Oracle11g - Fatal编程技术网

Sql oracle表创建

Sql oracle表创建,sql,oracle,oracle10g,oracle11g,Sql,Oracle,Oracle10g,Oracle11g,以下代码在第3行给出错误:ORA-00907:缺少右括号: 第3行代码非常烦人,因为这一行没有拼写错误,而且所有内容都在正确的位置。这不是定义外键的方式。外键必须知道如何找到它的合作伙伴 请看这里: 外键定义如下: CREATE TABLE ORGANISATION( ORG_REF VARCHAR(5), POSTCODE VARCHAR(10), --THIS WILL BE FOREIGN KEY TELEPHONE NUMBER, --2nd FOREIGN KEY

以下代码在第3行给出错误:ORA-00907:缺少右括号:


第3行代码非常烦人,因为这一行没有拼写错误,而且所有内容都在正确的位置。

这不是定义外键的方式。外键必须知道如何找到它的合作伙伴

请看这里:

外键定义如下:

CREATE TABLE ORGANISATION(
  ORG_REF VARCHAR(5),
  POSTCODE VARCHAR(10), --THIS WILL BE FOREIGN KEY
  TELEPHONE NUMBER,     --2nd FOREIGN KEY
  DESCRIPTION VARCHAR(30),
  AGENCY_ID VARCHAR(5),
     FOREIGN KEY FK_POSTCODE
     REFERENCES other_table (post_code),
     FOREIGN KEY FK_TELEPHONE
     REFERENCES other_table2 (phone)
);
更新:

其他建议阅读: 从哪里开始

您应该使用varchar2,而不是varchar。虽然他们现在一模一样 电话号码作为数字字段?许多电话号码以0开头。你正在失去这个。如果您想要很好地显示它,您必须在退出时进行一些时髦的字符串操作。 如果您的ID是数字,则应将其存储为数字。 很少有一种情况下,一张桌子应该是这样的。 外键设计用于在数据库中强制执行。因此,此模式中至少应该有一个或两个以上的表

一个典型的情况可能是这样的,它假设代理中存在相同的邮政编码、电话组合

如果它只是一列,而不是2列,则可以内联引用它,如下所示:

create table organisation (
     org_ref number(16) not null
   , phone varchar2(5) not null constraint fk_organisation
        references agency ( phone )
   , constraint pk_organisation primary key ( org_ref )
   );
然而,我非常怀疑这是否有效。外键必须引用唯一约束。所以,根据你们的评论判断,你们必须有一个在电话、邮政编码上有唯一约束或主键的表格代理

我怀疑你的数据模型有缺陷;听起来好像这个组织是从机构继承来的

如果您当前正在查看代理表,我会从代理中删除电话和邮政编码,然后进行连接以获取该信息:

进一步阅读:
第3行是邮政编码VARCHAR10外键,那么这行代码有什么问题吗?你有没有看过任何东西?在手册中查找正确的语法有什么困难?你可能希望将电话号码存储为varchar而不是数字,因为您经常需要保留非数字字符,例如+,并且通常对它们执行字符操作,而不是算术操作。@john,您可以阅读文档,尝试从中学习,然后做一些与我上面所写内容几乎相同的事情。然后,如果它起作用,您一定要将此答案标记为正确的解决方案。我的邮政编码和电话外键将链接到代理实体,该实体也有邮政编码和电话外键。因此,应将其定义为外键FK_邮政编码引用AGENCYPOSTCODE,外键FK_电话引用AGENCYPHONE;我的邮政编码和电话外键将链接到代理实体,该实体也有邮政编码和电话外键。因此,应将其定义为外键FK_邮政编码引用AGENCYPOSTCODE,外键FK_电话引用AGENCYPHONE;我只想用这个来理解这个外键example@john,您自己并没有努力去理解这一点,这是为什么人们愿意在Stackoverflow上帮助您的一个基本原则。为了回答您的原始问题,我正在用一个附加的阅读建议更新我的答案。谢谢您的帮助,但是为外键设置约束是必要的。因此,如果您不设置约束,它会起作用吗?您需要对引用表中与外键中相同的列设置唯一或主键约束。还建议您在引用表中的列上放置索引。
CREATE TABLE ORGANISATION(
    ORG_REF VARCHAR2(5),
    POSTCODE VARCHAR2(10) ,
    TELEPHONE VARCHAR2(50), 
    DESCRIPTION VARCHAR(30),
    AGENCY_ID VARCHAR(5),
    CONSTRAINT PK_ORGANISATION PRIMARY KEY ( org_ref ),
    CONSTRAINT FX_ORGANISATION FOREIGN KEY
       REFERENCES SOME_OTHER_TABLE(POSTCODE,PHONE)
   );
create table organisation (
     org_ref number(16) not null
   , phone varchar2(5) not null constraint fk_organisation
        references agency ( phone )
   , constraint pk_organisation primary key ( org_ref )
   );
select a.*, o.postcode, o.phone
  from agency a
  join organisation o
    on a.agency_id = o.agency_id
 where a.id = 12345
CREATE TABLE ORGANISATION(
    ORG_REF VARCHAR(5),
    POSTCODE VARCHAR(10),
    TELEPHONE NUMBER, 
    DESCRIPTION VARCHAR(30),
    AGENCY_ID VARCHAR(5),
    constraint pcodefk foreign key(POSTCODE) references postalcodetable(POSTALCODE),
    constraint telefk  foreign key(TELEPHONE) references telephonenumbers(TELEPHONE));