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