Oracle中sequence的創建和sequence的觸發器的創建

首先查看自己用戶是否有增加sequence的權限

如果沒有的話
添加權限
conn sys/password as sysdba
grant create sequence to 用戶;

Orcale添加sequence:

CREATE sequence ZhouMM –創建的sequence的名字
minvalue 1 –最小值從幾開始
maxvalue 999999999 –最大值到多少
start WITH 1 –從多少開始
INCREMENT BY 1 –每次添加多少
cache 100 –如果連接鍛鍊最大緩存數量爲100
order;

DB2的寫法:

create sequence seq_test
as bigint
start with 20000
increment by 1
minvalue 10000
maxvalue 99999999999999999
cycle
cache 20
order;

PostgreSQL的寫法:

create sequence seq_test
increment by 1
minvalue 10000
maxvalue 99999999999999999
start 20000
cache 20
cycle; –一直循環添加

Sequence的修改

修改前提是sequence 的owner,或者有ALTER ANY SEQUENCE 權限才能改動sequence. 可以alter除start至以外的所有sequence參數.如果想要改變start值,必須 drop sequence 再 re-create .
  Alter sequence 的例子:
  ALTER SEQUENCE emp_sequence
  INCREMENT BY 10
  MAXvalue 10000
  CYCLE   – 到10000後從頭開始
  NOCACHE
  影響Sequence的初始化參數:
  SEQUENCE_CACHE_ENTRIES =設置能同時被cache的sequence數目。
  也可以這樣
  alter sequence mySeq maxvalue 500
  注意:不能改start with,其他隨便改(設置minvalue值的時候不能大於當前值)

如果沒有添加觸發器的話,需要這樣插入**

insert into TabkInfo11(INSTRUCTIONNUMBER,name)value(ZhouMM.nextval,'小白');

這樣就會實現INSTRUCTIONNUMBER字段的自增了

如果添加了觸發器就可以

insert into TabkInfo11(INSTRUCTIONNUMBER,name)value('','小白');

這樣就可以實現自增了

添加一個sequence觸發器:(觸發器這是orcale的寫法)

CREATE or replace trigger ZhouMM_Increate –觸發器的名字
before insert on TASKINFO11 –來源表
FOR each row
DECLARE
nextid NUMBER
BEGIN
IF:new.INSTRUCTIONNUMBER IS NULL or :NEW.INSTRUCTIONNUMBER = 0 THEN
SELECT ZhouMM.nextval –先前建立的sequence
into nextid
FROM sys.DUAL;
:new.INSTRUCTIONNUMBER = nextid;
end if;
end ZhouMM_Increate;

(如果上面的方法出現,創建成功但是編譯錯誤的話使用下面的)或者

create trigger ZhouMM11 before insert on TASKINFO11
– ZhouMM11創建的觸發器
–TASKINFO11 表名
for each row
begin
select ZhouMM.nextval into :new.INSTRUCTIONNUMBER from dual;
–INSTRUCTIONNUMBER要自增的字段
end;

如何修改sequence的權限(將用戶aaa下的sequence查詢權限分配給用戶bbb):

conn aaa/aaa
grant select on sequencename to bbb
conn bbb/bbb
select aaa.sequencename.nextval from dual

授予和收回權限:

grant select on seq_teammember_id to aaa
revoke select on seq_teammember_id from bbb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章