我有两个模式: -
UserCredential_tbl
表PlayerAchievements_tbl
表现在,在创建名为PlayerAchievements_tbl
的表时,我想从另一个模式表Usercredential_tbl
引用它。以下是sql查询: -
create table PlayerAchievements_tbl
(
pid number(10) references gamersprofiledb.usercredential (id),
aid number(10) references achievements (id)
);
但是上面的查询给了我 '表格或视图不存在' 错误
This(可能重复)回答在ALTER操作中添加foreign_key,而我希望它在CREATE TABLE操作中添加foreign_key,而且它也没有指定执行此查询可能需要的授权或权限< / p>
所以我的确切问题是: -
1)是否可以在创建新表时将另一个模式表引用到现有模式表中?
2)或者我们是否需要一些权限才能执行此查询?
先谢谢。
答案 0 :(得分:1)
默认情况下,(非特权)用户无权查看其他用户拥有的对象。您需要GRANT
使用以下权限:
GRANT REFERENCES ON GamersProfileDB.UserCredential TO DeveloperDB;
或者,如果您还需要SELECT
表格,那么:
GRANT SELECT ON GamersProfileDB.UserCredential TO DeveloperDB;
一旦您有权引用(或选择)该表,您就可以使用:
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 )
);