如何在创建 table 时引用另一个模式 table 的外键?

How to reference foreign key of another schema table while creating table?

我有两个模式:-

现在在创建名为 PlayerAchievements_tbl 的 table 时,我想从另一个模式 table Usercredential_tbl 引用它。这是以下 sql 查询:-

create table PlayerAchievements_tbl 
(
pid number(10) references gamersprofiledb.usercredential (id),
aid number(10) references achievements (id) 
);

但是上面的查询给了我'table or view does not exist'错误

(可能重复)回答在 ALTER 操作中添加 foreign_key 而我希望它在 CREATE TABLE 操作中添加 foreign_key 而且它也没有指定执行此查询可能需要哪些授权或特权

所以我的确切问题是:-

1) 是否可以在创建新的 table 时将另一个模式 table 引用到现有模式 table 中?

2) 还是我们需要一些权限才能执行此查询?

提前致谢。

默认情况下,(非特权)用户无权查看其他用户拥有的对象。您需要 GRANT 使用权限:

GRANT REFERENCES ON GamersProfileDB.UserCredential TO DeveloperDB;

或者,如果您还需要 table 中的 SELECT,那么:

GRANT SELECT ON GamersProfileDB.UserCredential TO DeveloperDB;

一旦您有权引用(或select)table,您就可以使用:

CREATE TABLE PlayerAchievements_tbl                  -- Why add the "_tbl" suffix?
(
  pid number(10)
      CONSTRAINT PlayerAchievements__PID__FK         -- name the constraint
        REFERENCES GamersProfileDB.UserCredential (id),
  aid number(10)
      CONSTRAINT PlayerAchievements__AID__FK         -- name the constraint
        REFERENCES Achievements (id),
  CONSTRAINT PlayerAchievements__PID_AID__PK
    PRIMARY KEY ( pid, aid )
);