我想在我的列中添加主键约束,但Oracle给出了以下错误消息:
ORA-00922:缺少或无效选项
SQL:
ALTER VIEW view_my_departments
add CONSTRAINT department_id_pk
PRIMARY KEY (department_id);
答案 0 :(得分: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
答案 1 :(得分:1)
在这里,它们必须用disable子句写,因为它无法验证。
所以试试,
ALTER VIEW view_my_departments
add CONSTRAINT department_id_pk
PRIMARY KEY (department_id) disable;