uj5u.com熱心網友回復:
用序列,或者現有資料最大值加一。uj5u.com熱心網友回復:
不知道你的這個PK_ID是如何生成的,在oracle即使使用序列,如果不洗掉資料可以何證ID是連續的,但是當有資料洗掉時,序列就會斷續,而且被洗掉的的ID值,序列是不會發現也不會回收使用的。如果你是在應用程式中計算PK_ID,那么可以查到最大的ID值,然后加1,要考慮并發時ID重復問題,需要鎖表,鎖表影響資料庫性能。
建議使用序列,序列的初始值等于現有最大值+1,每次自增1
uj5u.com熱心網友回復:
你說的繼續排序是按照現有的ID,把缺失的補全?那應該是不太可能的了uj5u.com熱心網友回復:
序列的初始值等于現有最大值+1,每次自增1,這種怎么寫?會不會把原來的資料重新排序?uj5u.com熱心網友回復:
oracle在資料的存盤時不是按照你插入的順序依次寫入檔案的,即使你只做插入資料,也不一定按照順序寫入資料塊的(你可以試驗下,他創建一個簡單表,然后ID定義為主鍵(主鍵默認是有索引的),然后插入一些資料,再查詢,查詢時不要加order by,你看到的順序不一定是你插入的順序)。
資料是否排序,按什么來排序。是由你的select陳述句來控制的
create sequence student_id
2 minvalue 1 --最小值
3 nomaxvalue --不設定最大值(由機器決定),或 根據表欄位的值范圍設定 maxvalue
4 maxvalue 999 -- 最大值
5 start with 1 --從1開始計數,數值可變
6 increment by 1 --每次加1,數值可變
7 nocycle --一直累加,不回圈;cycle:達到最大值后,將從頭開始累加
8 nocache; --不建緩沖區。 如果建立cache那么系統將自動讀取cache值個seq,這樣會加快運行速度;如果在單機中使用cache,或者oracle死了,那么下次讀取的seq值將不連貫,所以不建議使用cache。
uj5u.com熱心網友回復:
原則上說,主鍵應該不參與任何邏輯,而只是作為唯一標識存在。你是想實作什么樣的效果?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29792.html
標籤:基礎和管理
下一篇:oracle系統表常用查詢sql
