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有點麻煩,...