gpt4 book ai didi

sql - 如何为正在删除和重新创建的表保留 GRANT?

转载 作者:行者123 更新时间:2023-12-03 18:27:52 26 4
gpt4 key购买 nike

我在一个相当新的项目中,我们仍在修改我们的 Oracle 11g 数据库表的设计。因此,我们经常删除并重新创建我们的表,以确保我们的表创建脚本在我们进行更改时按预期工作。

我们的数据库由 2 个模式组成。一个模式有一些带有 INSERT 的表导致数据有时被复制到我们的第二个模式中的表中的触发器。这需要我们使用管理员帐户登录数据库,例如 sysdbaGRANT访问第一个模式到第二个模式上的必要表,例如

GRANT ALL ON schema_two.SomeTable TO schema_one;

我们的问题是,每次我们对数据库设计进行更改并想要删除并重新创建我们的数据库表时,我们 GRANT 的访问权限。 -ed 至 schema_one table 掉下来就走了。因此,这会产生另一个烦人的步骤,我们必须使用管理员帐户登录才能重新 GRANT每次删除并重新创建这些表之一时的访问权限。

这没什么大不了的,但我很想从我们的开发和测试过程中尽可能多地消除步骤。有什么办法可以到 GRANT以这样一种方式访问​​表,即 GRANT -ed 权限在表被删除然后重新创建后仍然存在?如果这是不可能的,那么有没有更好的方法来解决这个问题?

最佳答案

所以授权被撤销的原因是新表是一个不同的对象。

SQL> select object_id from user_objects
2 where object_name = 'T72'
3 /

OBJECT_ID
----------
659195

SQL> drop table t72
2 /

Table dropped.

SQL> create table t72 (id number)
2 /

Table created.

SQL> select object_id from user_objects
2 where object_name = 'T72'
3 /

OBJECT_ID
----------
659212

SQL>

授予的是对象,而不是对象的名称。

关于您的问题,我不明白的是:您有一个过程可以删除并重新创建 schema_two 中的表。 .为什么该进程不将这些表的授予权限授予 schema_one ?为什么你有一个管理员帐户来代替?我猜你是作为 schema_two 连接的运行 DROP 和 CREATE 语句。为什么不直接将 GRANT 语句添加到该步骤?

因为授予对象特权与创建表一样是安装的一部分。所以你应该有一个可以做所有事情的过程。

关于sql - 如何为正在删除和重新创建的表保留 GRANT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com