簡體   English   中英

創建表時如何引用另一個模式表的外鍵?

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

我有兩個模式:

  • GamersProfileDB-包含UserCredential_tbl
  • DeveloperDB-包含PlayerAchievements_tbl

現在,在創建名為PlayerAchievements_tbl表時,我想從另一個架構表Usercredential_tbl引用它。 這是下面的SQL查詢:

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

但是上面的查詢給了我“表或視圖不存在”的錯誤

這個 (可能重復)的答案是在ALTER操作中添加foreign_key,而我希望它在CREATE TABLE操作上添加foreign_key,而且它也沒有指定執行此查詢可能需要的授予或特權

所以我的確切問題是:

1)在創建新表時可以將另一個模式表引用到現有模式表中嗎?

2)還是我們需要一些特權才能執行此查詢?

提前致謝。

默認情況下,(非特權)用戶無權查看另一個用戶擁有的對象。 您需要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 )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM