您好,登錄后才能下訂單哦!
在一些業務表中原本不需要ID字段作為唯一標識,可是在后期為了方便和需求要在數據表中加ID列作為主鍵或者外鍵!那么下面總結了兩種方式:
解決方案一:
序列+UPDATE,原表有數據想新增一列ID,自動增值
1、創建序列
格式:
create sequence test_seq
start with 1--起始位1
increment by 1--根基需求,每次增加多少
minvalue 1--最小值
maxvalue 999--根據需求最大值
nocache--無緩存
詳細請看本人博客序列介紹
2、進行插入
格式:
update 表 set ID=test_seq.nextval;--原數據表中有多少行,ID就會插入多少行
注意這是更改!也就是說原來你表中ID如果有數據將會被覆蓋
本方法適用于新建ID列無數據,不牽扯其余列動作指令,保證數據完整性,大多數序列用于自動增長
解決方案二:
另一種場景就是想來點高端的(特殊場景),當我插入或者更改某列,把數據按照序列增長的步調來實現
序列+觸發器+游標
1、創建序列
格式:
create sequence test_seq
start with 0--起始位
increment by 3--每次我想增加3
minvalue 1--最小值
maxvalue 999--根據需求最大值
nocache--無緩存
2、創建觸發器
格式:
create or replace trigger trig_test
before update on test_table
for each row
declare ing_age number;
begin
if :new.ID = 0 or :new.ID is null then
select test_seq.nextval into ing_age from sys.dual;
:new.ID := ing_age;
end if;
end trig_test;
如果愛有需求可以整個游標,這里不再掩飾,因為如果單存對序列等一類問題操作,這樣就復雜化會增加數據庫和后期維護的成本負擔。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。