我从多个表中选择数据,我还需要在这些表上获得最大的“时间戳”。我将需要它来创建自定义缓存控件。
tbl_name tbl_surname
id | name id | surname
--------- ------------
0 | John 0 | Doe
1 | Jane 1 | Tully
... ...
我有以下查询:
SELECT name, surname FROM tbl_name, tbl_surname WHERE tbl_name.id = tbl_surname.id
我需要将以下信息添加到结果集中:
SELECT MAX(ora_rowscn) FROM (SELECT ora_rowscn FROM tbl_name
UNION ALL
SELECT ora_rowscn FROM tbl_surname);
我试图使用 UNION 但我得到错误 - 混合组而不是单组数据 - 或类似的东西,我知道为什么我不能使用联合。
我不想将其拆分为 2 个调用,因为我需要从数据库获取的当前快照的时间戳来进行缓存管理。在 select 和对 MAX 的调用之间,数据库可能会发生变化。
这是我想要的结果:
John | Doe | 123456
Jane | Tully | 123456
其中 123456 是表 tbl_name 和 tbl_surname 上次更改(插入、更新、删除)的大致时间。
我对 DB 具有只读访问权限,因此无法创建触发器、存储过程、额外表等...
感谢您的任何建议。
编辑:值 *ora_rowscn* 是按行块分配的。因此,在一个表中,该值每行可能不同。我需要查询中涉及的两个(所有)表的最大值。