允许角色查询、插入和更新可变数组
Posted
技术标签:
【中文标题】允许角色查询、插入和更新可变数组【英文标题】:Allowing a role to query, insert upon and update a varying array 【发布时间】:2012-02-05 14:12:50 【问题描述】:my last question 略有不同...
我试图让标题为 Head 的角色能够查询标题为 ReportDetails 的表格。 ReportDetails 表包含一个名为 ReportEntries_VA 的可变数组。我已经测试了我的数据库,发现即使我在 ReportDetails 上授予了 SELECT、INSERT、UPDATE 权限,Head 仍然无法访问 ReportEntries_VA 。
代码如下:
CREATE TYPE ReportEntries_Type AS OBJECT
(Subject VARCHAR (500));
/
CREATE OR REPLACE TYPE ReportEntries_VA AS
VARRAY (12) OF ReportEntries_Type;
/
CREATE TABLE ReportDetails
(ReportID INTEGER NOT NULL UNIQUE,
StudentID INTEGER NOT NULL UNIQUE,
ReportEntries ReportEntries_VA,
DateLastModified DATE NOT NULL,
CONSTRAINT ReportDetails_PK PRIMARY KEY (ReportID, StudentID),
CONSTRAINT RDStudentIDSD FOREIGN KEY (StudentID)
REFERENCES StudentDetails (StudentID));
然后将权限授予 Head 如下:
GRANT SELECT, INSERT, UPDATE ON ReportDetails TO Head;
我知道我可以使用它来查询,但不能插入或更新:
GRANT EXECUTE ON ReportEntries_Type TO Head;
GRANT EXECUTE ON ReportEntries_VA TO Head;
当我尝试插入行时,我得到了这个:ORA-01031: insufficient privileges
,即使我已在表上授予 SELECT、INSERT、UPDATE,并在对象和可变数组上执行。基本上它不会让我插入或更新数组
任何关于我如何允许 Head 插入和更改可变数组(以及在它之前创建的对象?)的建议将不胜感激。
非常感谢, 祖鲁语
【问题讨论】:
@FlorinGhita 我得到这个:“ORA-01031:权限不足”,即使我已经在 table 上授予了 SELECT、INSERT、UPDATE 并在对象和可变数组。基本上它不会让我插入或更新数组。 当您直接授予用户而不是角色时会发生什么? 那张桌子上有触发器吗?尝试将选择限制在您不想访问的表中的表 你能告诉我们失败的更新代码吗?我无法重现该错误,它对我来说很好。 【参考方案1】:您还需要在 varray 上授予执行权限。
【讨论】:
抱歉 - 我现在看到您确实在 varray 上授予执行权限 - 只是它没有从您的代码示例中显示。以上是关于允许角色查询、插入和更新可变数组的主要内容,如果未能解决你的问题,请参考以下文章