Sql oracle表创建
以下代码在第3行给出错误:ORA-00907:缺少右括号: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行代码非常烦人,因为这一行没有拼写错误,而且所有内容都在正确的位置。这不是定义外键的方式。外键必须知道如何找到它的合作伙伴 请看这里: 外键定义如下:
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));