如何在创建 table 时引用另一个模式 table 的外键?
How to reference foreign key of another schema table while creating table?
我有两个模式:-
- GamersProfileDB - 包含
UserCredential_tbl
table
- DeveloperDB - 包含
PlayerAchievements_tbl
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 )
);
我有两个模式:-
- GamersProfileDB - 包含
UserCredential_tbl
table - DeveloperDB - 包含
PlayerAchievements_tbl
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'错误
所以我的确切问题是:-
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 )
);