Foreign keys in alternate schemas with Oracle?

时光毁灭记忆、已成空白 提交于 2019-12-18 14:56:44

问题


I have two schemas, let's call them BOB and FRED. I need to call a table in schema FRED from schema BOB to use the primary key in that table as a foreign key. I've set up the appropriate grants for schema FRED to allow BOB access to it, but whenever I run the script, it complains that I do not have the correct permissions. Is there another setting that I need to change somewhere? Can this even be done?

My FK creation is as follows:

ALTER TABLE "BOB"."ITEMGROUP" WITH CHECK ADD CONSTRAINT FK_ITEMS_ITEM FOREIGN KEY (ItemID)
REFERENCES "FRED"."ITEMS"(ItemID)

And I'm doing the grant with:

GRANT ALTER ON "FRED"."ITEMS" TO "BOB"

I get this error message:

SQL Error: ORA-01031: insufficient privileges 
01031. 00000 -  "insufficient privileges"

*Cause:    An attempt was made to change the current username or password
           without the appropriate privilege. This error also occurs if
           attempting to install a database without the necessary operating
           system privileges.
           When Trusted Oracle is configure in DBMS MAC, this error may occur
           if the user was granted the necessary privilege at a higher label
           than the current login.

*Action:   Ask the database administrator to perform the operation or grant
           the required privileges.
           For Trusted Oracle users getting this error although granted the
           the appropriate privilege at a higher label, ask the database
           administrator to regrant the privilege at the appropriate label.

回答1:


You need to:

grant references on "FRED"."ITEMS" TO "BOB"

See this "AskTom"




回答2:


To create a foreign key referencing a table in another schema you need the "REFERENCES" privilege:

GRANT REFERENCES ON FRED.ITEMS TO BOB;


来源:https://stackoverflow.com/questions/12199349/foreign-keys-in-alternate-schemas-with-oracle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!