Oracle Alter Table,在列ORA-0253处添加外键约束

Oracle Alter Table,在列ORA-0253处添加外键约束,oracle,Oracle,您好,我正在学习SQL Associate的Oracle认证。 并尝试做一些例子。 我有一个问题,我不能很容易地找到这方面的参考 create table employees (employee_id number NOT NULL, first_name varchar(20), last_name varchar(30), constraint employee_pk primary key (employee_id)); create table employee_notes (em

您好,我正在学习SQL Associate的Oracle认证。 并尝试做一些例子。 我有一个问题,我不能很容易地找到这方面的参考

create table employees 
(employee_id number NOT NULL,
first_name varchar(20),
last_name varchar(30),
constraint employee_pk primary key (employee_id));

create table employee_notes 
(employee_notes_id number, 
 employee_notes varchar(500),
 constraint pk_employee_notes primary key (employee_notes_id));
创建序列员工注释以1递增1开始


现在我想在employee_notes表中添加一个带有外键约束的新列。 我在语法上找不出问题出在哪里

****alter table employee_notes 
add employee_id number
constraint fk_employee_notes foreign key (employee_id) references employees (employee_id);****
我得到这个错误

ORA-0253:不允许使用约束规范


我还尝试更改表,添加列,然后添加约束,但无法完成

--

更改表格员工笔记 添加约束fk_employee_notes外键(employee_id)引用employee(employee_id)

ORA-0253:此处不允许约束规范

我想知道我怎样才能做到这一点
为什么这个语法是错误的:)

您做了一些错误的事情,因为-它工作正常:


使用ALTER TABLE时。。。ADD要在一条语句中添加列和约束,请执行以下操作:

-- notice the () and the comma!
alter table employee_notes
add ( 
  employee_id number
, constraint fk_employee_notes 
  foreign key (employee_id) references employees (employee_id)
) ;

这应该能奏效。看见语法类似于CREATE TABLE,您还可以在()中写入所有列名、数据类型等,用逗号分隔。

我在oracle的SQL Live中执行这些语句,我现在就在Live SQL中逐个命令执行它们。也没问题。我想附上一张图片来说明这一点,但我现在没有访问任何图片共享服务的权限。在您上一次声明中,
employee notes
应该是
employee\u notes
SQL> CREATE TABLE employees
  2  (
  3     employee_id  NUMBER NOT NULL,
  4     first_name   VARCHAR (20),
  5     last_name    VARCHAR (30),
  6     CONSTRAINT employee_pk PRIMARY KEY (employee_id)
  7  );

Table created.

SQL>
SQL> CREATE TABLE employee_notes
  2  (
  3     employee_notes_id  NUMBER,
  4     employee_notes     VARCHAR (500),
  5     CONSTRAINT pk_employee_notes PRIMARY KEY (employee_notes_id)
  6  );

Table created.

SQL> ALTER TABLE employee_notes ADD employee_id NUMBER;

Table altered.

SQL> ALTER TABLE employee_notes ADD CONSTRAINT fk_employee_notes
  2  FOREIGN KEY (employee_id)
  3  REFERENCES employees (employee_id);

Table altered.

SQL>
-- notice the () and the comma!
alter table employee_notes
add ( 
  employee_id number
, constraint fk_employee_notes 
  foreign key (employee_id) references employees (employee_id)
) ;