在Oracle 10g之后版本中提供了一个新的伪列,ORA_ROWSCN,该伪列用来显示行级的SCN。 注意:只有在create table时加上ROWDEPENDENCIES关键字,才可以启动行级SCN的记录,否则ORA_ROWSCN只会显示该行所在的block头部记录的SCN。ROWDEPENDENCIES关键字只有在创建表的时候可以使用,表一旦被创建该属性则无法变更。 SQL> select ora_rowscn,a.* from dept a; ORA_ROWSCN DEPTNO DNAME LOC ———- —— ————– ————- 1514356 10 ACCOUNTING NEW YORK 1514356 20 RESEARCH DALLAS 1514356 30 SALES CHICAGO 1514356 40 OPERATIONS BOSTON 怎么使用ORA_ROWSCN则需要发挥大家智慧。下面是两则有趣的例子。 1. 如何使用ORA_ROWSCN来避免更新在选取了之后又被其它会话更新过的记录,从而避免使用select … for update来锁定数据行。 ORA_ROWSCN: The pseudo Column 2. 如何在不开启Audit的情况下,估算某表被最新改动的时间(不是DDL改动,而是DML改动)。 When was a table last changed? 在你们的应用中使用到这个伪列了吗?