ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何添加foreign key

如何添加foreign key

原创 Linux操作系统 作者:NinGoo 时间:2019-02-11 09:36:04 0 删除 编辑
SQL> create table t1(id int, x varchar2(10), constraint pk_t1 primary key (id));

表已创建。
想当然的,我以为建表的时候添加外键约束和添加主建约束是一样的
SQL> create table t2(id int, x varhcar2(10), constraint fk_t2 foreign key(id) re
ferences t1(id));
create table t2(id int, x varhcar2(10), constraint fk_t2 foreign key(id) referen
ces t1(id))
*
第 1 行出现错误:
ORA-00907: 缺失右括号
假如先建表,然后再添加外键约束:
SQL> create table t2(id int,x varchar2(10));
表已创建。
SQL> alter table t2 add constraint fk_t2 foreign key(id) references t1(id);
表已更改。
这下糊涂了,为什么前面create table时之间创建foreigh key的语法是错误的呢?
翻一翻SQL Reference,前面给出的语法图示上看,似乎也是正确的,但最后给的实际例子却是这样的:
CREATE TABLE dept_20 (employee_id NUMBER(4),
last_name VARCHAR2(10),job_id VARCHAR2(9),
manager_id NUMBER(4),hire_date DATE,
salary NUMBER(7,2),
commission_pct NUMBER(7,2),
department_id CONSTRAINT fk_deptno REFERENCES departments(department_id) );

ok,让我们按照示例再来一次:
SQL> drop table t2;
表已删除。
SQL> create table t2(id constraint fk_t2 references t1(id),x varchar2(10));
表已创建。
这个地方Oracle确实跟我们开了个玩笑,一不注意可能撞破脑袋也搞不明白到底哪里出了问题了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/193161/viewspace-50163/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2004-12-07

  • 博文量
    200
  • 访问量
    170788