gpt4 book ai didi

sql - 如何在定义列的同一行中定义外键?

转载 作者:行者123 更新时间:2023-12-03 23:16:55 24 4
gpt4 key购买 nike

我正在学习使用 Oracle 12.1。

下面的外键定义有什么问题?

set echo on
drop table city;
drop table emp;

create table city (
id number primary key,
name varchar2(20)
);

create table emp (
id number,
cityid number foreign key references city(id)
);

当我执行它时,出现以下错误。

$ sqlplus / as sysdba @foo.sql
...
...
SQL>
SQL> create table city (
2 id number primary key,
3 name varchar2(20)
4 );

Table created.

SQL>
SQL> create table emp (
2 id number,
3 cityid number foreign key references city(id)
4 );
cityid number foreign key references city(id)
*
ERROR at line 3:
ORA-00907: missing right parenthesis

我认为在定义列的同一行中为列定义外键约束是有效的。

我正在使用 http://www.w3schools.com/sql/sql_foreignkey.asp 下定义的语法> CREATE TABLE 上的 SQL FOREIGN KEY 约束 > SQL Server/Oracle/MS Access。

这个语法在 Oracle 12.1 中真的无效吗?

最佳答案

Oracle在定义列时创建约束的语法不允许使用 foreign key 关键字;你的声明应该是:

create table emp (
id number,
cityid number references city(id)
);

如果你想命名你的约束,而不用单独的语句创建它,你可以使用:

create table emp (
id number,
cityid number constraint CONSTRAINT_NAME references city(id)
);

关于sql - 如何在定义列的同一行中定义外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com