Oracle序列更新

2022-06-15 13:42:11 字數 695 閱讀 6965

oracle 資料庫的時候,有時候會選擇使用自增序列作為主鍵。但是在開發過程中往往會遇到一些不規範的操作,導致表的主鍵值不是使用序列插入的。這樣在資料移植的時候就會出現各種各樣的問題。當然資料庫主鍵不使用序列是一種很好的方式,但是維護的是老**,所以並不能去修改它。於是寫乙個指令碼將當前表的序列更新為主鍵最大值 + 1。

declare

vnumber number;

nnumber number;

begin

select ((select max(ana_id) from ana_qualityspec_mon) -

anaqualityspecmonseq.nextval)

into vnumber

from dual;

if vnumber > 0 then

execute immediate 'alter sequence anaqualityspecmonseq increment by ' ||

vnumber;

select anaqualityspecmonseq.nextval into nnumber from dual;

execute immediate 'alter sequence anaqualityspecmonseq increment by 1 cache 20';

end if;

end;

Oracle批量更新

需求 將t2 t statbuf 表中id和t1 t mt 表相同的記錄更新進t1表。1.錯誤的寫法 1update table name t1 set a,b,c select a,b,c from table name 2 t2 where t1.a t2.a 這種寫法,會更新t1表中的所有行 ...

oracle序列和mysql序列

1.什麼是序列?序列 可供多個使用者用來產生唯一數值的資料庫物件 2.為什麼用序列?自動提供唯一的數值 共享物件 主要用於提供主鍵值 將序列值裝入記憶體可以提高訪問效率 3.怎麼用序列?重點 oracle序列和mysql序列 oracle序列 建立create sequence dept depti...

ORACLE匯出序列

最近遇到oracle匯出序列時有問題 即序列的當前值和資料庫中一些表的id最大值不一致,我們的資料庫表的主鍵是從序列中取的 需要重新匯入序列,發現exp不能單獨匯出序列,由於資料量龐大,所以又不想再導一遍資料。在網上搜尋了一下找到乙個比較好的辦法 第一步 在原資料庫上執行如下語句 select cr...