Oracle SQL - ALTER VIEW:ORA-00922:缺少或无效选项

Posted

技术标签:

【中文标题】Oracle SQL - ALTER VIEW:ORA-00922:缺少或无效选项【英文标题】:Oracle SQL - ALTER VIEW : ORA-00922: missing or invalid option 【发布时间】:2013-05-17 12:28:59 【问题描述】:

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

ORA-00922:缺少或无效选项

SQL:

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

【问题讨论】:

您不能向视图添加约束。只适用于桌子。 adding primary key to sql view 的可能重复项 【参考方案1】:

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

但是,其中没有持久保存实际数据。只有表有数据,因此表可能有约束。找出哪个表包含 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

【讨论】:

【参考方案2】:

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

那就试试吧,

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

【讨论】:

以上是关于Oracle SQL - ALTER VIEW:ORA-00922:缺少或无效选项的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 18C新特性:ALTER SYSTEM CANCEL SQL

ORACLE中通过SQL语句(alter table)来增加删除修改字段

oracle sql 基础:数据定义语言(创建和管理表视图)

Oracle SQL - 在同一个 alter_session_set_clause 中为多个参数设置值

改密码 SQL> /@oracleserviceorcl as sysdba alter user sys identified by root123456; Not logged on

在SQL中,如何用ALTER命令删除表中所有完整性约束,然后再用ALTER命令建立