1

我以 SYSTEM 用户身份登录 Oracle XE 实例。当我尝试运行创建用户、表和约束的脚本时,ORA-01031出现错误。脚本如下:

CREATE USER AA IDENTIFIED BY AA DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
CREATE USER BB IDENTIFIED BY BB DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT ALL PRIVILEGES TO AA WITH ADMIN OPTION;
GRANT ALL PRIVILEGES TO BB WITH ADMIN OPTION;
...
CREATE TABLE ...
CREATE INDEX ...
...
ALTER TABLE "BB"."B_TABLE" ADD CONSTRAINT "FK_BB_AA" FOREIGN KEY ("AA_ID")
  REFERENCES "AA"."A_TABLE" ("ID") ENABLE; -- this line report the error

不能在 Oracle XE 上添加这个约束吗?

4

1 回答 1

1

首先,绝不应该出现您授予ALL PRIVILEGES用户权限的情况,尤其是不授予用户权限的情况WITH ADMIN OPTION。这只是管理安全性的一种糟糕方式。在任何近似真实系统的情况下,您都希望确定实际需要哪些权限并仅授予这些权限。

其次,为了让架构中的外键BB引用 中的父表AABB必须REFERENCE对 中的父表具有特权AA。由于没有REFERENCE ANY TABLE系统权限,您需要BB在创建表之后但在创建外键之前授予REFERENCE权限。AA.A_TABLE

GRANT REFERENCES ON aa.a_table TO bb;
于 2012-10-05T01:32:03.997 回答