Oracle觸發器 序列小筆記

2021-10-16 12:21:35 字數 2839 閱讀 3175

create table student_info   ---建立student表

( id number(19), --id

stu_no varchar2(20), --學號

stu_name varchar2(32), --姓名

stu_age number, --年齡

stu_major varchar2(32) --專業

)create table stu_log ---建立stu_log表,用於記錄對student表的操作日誌

( log_id number, --日誌id

log_action varchar2(100), --操作名稱

log_date date, --操作時間

log_message varchar2(32) --

)

--建立序列,seq_student表示序列名

create sequence seq_student

minvalue 1

maxvalue 9999 --最大值

start with 11 -- 開始序列

increment by 1 --每次增長

cache 10; --快取

//建立乙個插入時自增的觸發器

create or replace trigger tr_stu_add

before insert on student_info

for each row

begin

select seq_student.nextval into :new.id from dual; --seq_user.nextval下一串行,:new.id表示列名

end;

測試觸發器

//沒有id值,插入時會自增

insert

into student_info(stu_no,stu_name,stu_major)

values

('no1'

,'張三'

,'中文系'

);

// 1.行級觸發器

create or replace trigger modify_stucao

after insert or delete or update of stu_name,stu_major --可以設定乙個或多個字段

on student_info

for each row

begin

if inserting then

insert into stu_log values(1,'insert',sysdate,:new.stu_name);

elsif deleting then

insert into stu_log values(2,'delete',sysdate,:old.stu_name);

elsif updating then

insert into stu_log values(3,'update_old',sysdate,:old.stu_name);

insert into stu_log values(4,'update_new',sysdate,:new.stu_name);

end if;

end;

//測試語句

insert

into student_info values(1

,'no2'

,'李四',21

,'數學系');

--插入一條資料

delete student_info where stu_name=

'張三'

;--刪除一條資料

update student_info set stu_age=

25where stu_name=

'李四'

;--修改李四的年齡

update student_info set stu_major=

'王二'

where stu_name=

'李四'

;--修改李四的名稱

//2.語句(表級)觸發器

// new 或 old 引用不允許在表級觸發器中

create or replace trigger modify_stu1

before insert or update or delete on student_info

begin

if deleting then

elsif updating then

elsif inserting then

end if;

end;

//測試語句

insert

into student_info values(1

,'no2'

,'李四',21

,'數學系');

--插入一條資料

delete student_info where stu_name=

'張三'

;--刪除一條資料

update student_info set stu_age=

25where stu_name=

'李四'

;--修改李四的年齡

update student_info set stu_major=

'王二'

where stu_name=

'李四'

;--修改李四的名稱

Oracle 序列,觸發器

序列是什麼 序列就是按照一定的規則,不斷增長 不斷減少 的乙個數字 用於我們資料庫表裡 作為資料的乙個唯一標識。序列的語法 建立序列 create sequence seq objid 建立乙個名稱為seq objid 的序列 increment by 1 每次增長1 1,2,3,4,5,6,7,s...

oracle 建序列,觸發器

oracle是全球最大的關聯式資料庫,她的使用有很多技巧,常用的建立表空間,建立序列,建立觸發器等嗾使是初學者需要掌握的內容。首先登陸資料庫 啟動命令列 cmdsqlplus 以管理員 sys 登陸資料庫 sqlplus sys password as sysdba 建立臨時表空間 create t...

序列及觸發器(oracle)

oracle在建立表時和其他的資料庫有點不一樣,如sql server可以在int型別的字段後加上identity 1,1 該字段就會從1開始,按照 1的方式自增,將這個字段設定為主鍵,有利於我們進行資料的插入操作。mysql中可以使用 auto increment 即可。但是oracle有點麻煩,...