如何從 Oracle 表中獲取最新的 100 行(插入或更新)?需要查詢以下情況 - 1.Table 沒有任何日期列。2.表格有日期欄。
該查詢應該在 Oracle 11g 和更高版本的 Oracle 12c 中作業。
uj5u.com熱心網友回復:
您的表應該已啟用rowdependencies選項并通過 ora_rowscn 偽列獲取:
Select * from t order by ora_rowscn desc fetch first 100 rows only
如果您的表沒有 rowdependencies 選項,則需要使用 rowdependencies 重新創建它
uj5u.com熱心網友回復:
Oracle 會在 DBA_TAB_MODIFICATIONS 視圖中跟蹤對表執行的插入、更新和洗掉的次數。它不是實時保持的,因此如果您需要在很短的時間內檢查它,那么您必須重繪 統計資料,以便您可以(輕松)查看。
execute dbms_stats.flush_database_monitoring_info;
-- Do work
select table_owner,table_name,inserts,updates,deletes from dba_tab_modifications where table_name = 'RDS_LOG';
TABLE_OWNER TABLE_NAME INSERTS UPDATES DELETES
------------------------------ ------------------------------ ---------- ---------- ----------
MYUSER RDS_LOG 4660111 0 1119531
uj5u.com熱心網友回復:
SELECT * FROM table ORDER BY column DESC WHERE rownum < 100
uj5u.com熱心網友回復:
SQL> create table dt_del_ex(id number);
Table created.
SQL> set serveroutput on
SQL> BEGIN
2
3 INSERT INTO dt_del_ex VALUES(1);
4
5 DBMS_OUTPUT.put_line(TO_CHAR(SQL%ROWCOUNT)||' rows inserted');
6
7 INSERT INTO dt_del_ex select rownum from dual connect by level <=10;
8
9 DBMS_OUTPUT.put_line(TO_CHAR(SQL%ROWCOUNT)||' rows inserted');
10
11 UPDATE dt_del_ex SET id = id 3 WHERE id >= 9;
12
13 DBMS_OUTPUT.put_line(TO_CHAR(SQL%ROWCOUNT)||' rows updated');
14
15 DELETE FROM dt_del_ex WHERE id <= 10;
16
17 DBMS_OUTPUT.put_line(TO_CHAR(SQL%ROWCOUNT)||' rows deleted');
18
19 END;
20 /
1 rows inserted
10 rows inserted
2 rows updated
9 rows deleted
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389867.html
上一篇:在選擇中定義
