0

我想向我的列添加主键约束,但 Oracle 给了我以下错误消息:

ORA-00922: 缺少或无效选项

SQL:

ALTER VIEW view_my_departments
add CONSTRAINT department_id_pk
    PRIMARY KEY (department_id);
4

2 回答 2

3

视图没有约束。视图只是一个使用名称保存的查询。因为它是一个查询,所以它返回一个结果集,因此在查询方面可以与表互换。

但是,其中没有持久化的实际数据。只有表有数据,因此表可能有约束。找出哪个表包含 department_id (我猜可能称为部门?)并将约束添加到该表中。

ALTER TABLE department
add CONSTRAINT department_id_pk
    PRIMARY KEY (department_id);

查询表就像使用子查询。

如果“myview”定义为:

select r.a, ro.b, u.c
from registration r
inner join roster ro on r.roster_id = ro.roster_id
inner join user u on u.user_id = ro.user_id

然后数据库将解释以下查询

select a, b, c
from myview
where x = 1

作为

select a, b, c
from (select r.a, ro.b, u.c
      from registration r
      inner join roster ro on r.roster_id = ro.roster_id
      inner join user u on u.user_id = ro.user_id)
where x = 1
于 2013-05-17T12:35:47.083 回答
2

在这里,它们必须使用 disable 子句编写,因为它无法验证。

所以试试,

ALTER VIEW view_my_departments
add CONSTRAINT department_id_pk
    PRIMARY KEY (department_id) disable;
于 2013-05-17T12:35:52.407 回答