Ift*_*lad 2 oracle foreign-keys ora-01031
所以我需要从Employee表(idEmployee,name等)到创建帐户的真实用户进行映射.我决定添加一个表Mapping_Employee_User(idEmployee,userName),如下所示
CREATE TABLE Mapping_Employee_User(
idEmployee NUMBER(6)
CONSTRAINT FK_Mapping_Employee_User1 REFERENCES Employee (idEmployee),
userName VARCHAR2(30 BYTE)
CONSTRAINT FK_Mapping_Employee_User2 REFERENCES ALL_USERS(USERNAME),
CONSTRAINT PK_Mapping_Employee_User PRIMARY KEY (idEmployee, userName)
);
Run Code Online (Sandbox Code Playgroud)
但我得到" ORA01031权限不足原因:试图更改当前的用户名或密码..."但我实际上并没有这样做,我只是想做一个参考.
注意:我对此用户拥有完整的权利
记录为SYS我可以看到实际的表名为"USER $",我找不到表ALL_USERS ...无论如何我怎么做这种引用?
ALL_USERS
并且USER$
都是系统表/视图.它们由Oracle本身维持在低水平.在太低的水平上不能执行这些约束.你根本无法做你想做的事.
(按照这种方式思考:如果您尝试过会发生DROP USER bob
什么?您是否希望Oracle强制执行您的外键约束?如果您的用户表空间处于脱机状态会怎样?)
编辑:我建议你不要在userName上留下外键.您可能要安排一些工作给用户比较Mapping_Employee_User
对比DBA_USERS
,以确保它们保持同步.或者,您可能希望使用LDAP(我听说可能)来管理您的Oracle用户.