Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 甲骨文及;引用所有用户(用户名)_Oracle_Foreign Keys_Ora 01031 - Fatal编程技术网

Oracle 甲骨文及;引用所有用户(用户名)

Oracle 甲骨文及;引用所有用户(用户名),oracle,foreign-keys,ora-01031,Oracle,Foreign Keys,Ora 01031,因此,我需要从Employee表(ideemployee、name等)映射到创建了帐户的真实用户。我决定添加一个表映射\u Employee\u User(ideemployee,userName),如下所示 CREATE TABLE Mapping_Employee_User( idEmployee NUMBER(6) CONSTRAINT FK_Mapping_Employee_User1 REFERENCES Employee (idEmployee),

因此,我需要从Employee表(ideemployee、name等)映射到创建了帐户的真实用户。我决定添加一个表映射\u Employee\u User(ideemployee,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)
);
但是我得到了一个“ORA01031权限不足”原因:有人试图更改当前用户名或密码…”但我并没有这样做,我只是想做一个参考

请注意:我对该用户拥有完全权限


登录为SYS我可以看到实际的表名为“USER$”,我找不到表中的所有用户…无论如何,我如何进行这种引用???

所有用户和
用户$
都是系统表/视图。它们由Oracle自己维持在较低的级别。级别太低,无法实施这些约束。你根本不能做你想做的事

(这样想:如果您试图
删除用户bob
,会发生什么?您希望Oracle强制执行您的外键约束吗?如果您的用户表空间处于脱机状态,会发生什么情况?)


编辑:我建议你把用户名上的外键去掉。您可能希望安排一些作业来比较
Mapping\u Employee\u User
中的用户与
DBA\u用户
中的用户,以确保它们保持同步。或者,您可能希望使用LDAP(我听说这是可能的)来管理Oracle用户。

所有用户本身都是一个视图,而不是一个表

将所有用户上的select授予用户名

应该足够了。如果您仍然获得ORA-01031,可能是因为用户没有CREATE TABLE权限:


将创建表授予用户名

我更改了一行,现在得到一个较小的错误:CONSTRAINT-CONSTRAINT-FK\u-Mapping\u-Employee\u-User2引用SYS.USER$(NAME)。现在它只是说表不存在,但这个选择工作得很好:从SYS.USER$中选择名称。。。那又怎么样?我怎么能跳过这一步?@IftimieVlad:文档上说你根本不应该碰SYS.USER$。我怀疑有没有办法避免这个错误。至少这不是一种足够理智的思考方式(我的意思是,只要你在处理数据字典,也许你可以找到约束是如何存储的,并直接插入它。但不要这样做。)。是的,你是对的。。。我决定使用没有引用部分的表。我已经拥有第一个用户的所有角色(在我创建他时授予他所有角色)。请看下面。我添加了一些东西只是为了安全起见-创建一个表,看看它是否有效