Oracle中sequence的建立和sequence的觸發器的建立____Oracle

來源:互聯網
上載者:User
首先查看自己使用者是否有增加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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.