我有2个相同的Oracle表(表1和表2)。这两个表中的数据插入都是截断然后加载。将数据插入表后,将在其上应用同义词。还可以使用
找到要为下次加载插入的表SELECT OBJECT_NAME
INTO var1
FROM (SELECT RR.OBJECT_NAME,
RANK () OVER (ORDER BY RR.LAST_DDL_TIME ASC) RNK
FROM SYS.ALL_OBJECTS RR
WHERE RR.OBJECT_NAME IN
('Table1', 'Table2'))
WHERE RNK = 1;
但是我需要一种替代技术,因为如果我们向任何用户授予访问角色,这两个表的DDL_TIME就会变得相同。请注意,我们无法改变表结构
答案 0 :(得分:0)
评论太长了。
您的应用程序设计很差。您正在将数据库元数据用于不适合的目的。如果需要跟踪用户被授予访问表的时间等内容,则应将此信息显式保存在另一个表中,将访问控制逻辑包装在存储过程中或使用DDL触发器。
您遇到问题的一个迹象是DDL_TIME
没有按照您的意愿行事。本专栏正在完成记录的工作,可能是数据库需要它做什么。缺点是你重新解释它。