觸發器trigger
觸發器我們也可以認為是存盤程序,是一種特殊的存盤程序,
存盤程序:有輸入引數和輸出引數,定義之后需要呼叫
觸發器:沒有輸入引數和輸出引數,定義之后無需呼叫,在適當的時候會自動執行,
適當的時候:觸發器與表相關,當我們對這個相關的表中的資料進行DDL(資料的添加、修改、洗掉)操作的時候
|
存盤程序 |
觸發器 |
|
create proc proc_name --宣告輸入引數和輸出引數 as --程序體 go |
create trigger tri_student_delete on student for delete as … go |
注:觸發器是在對應的操作執行完成之后才執行的
SQLServer的資料字典中,提供了一張表deleted用戶存盤最后一次執行洗掉的資料
create trigger tri_student_delete on student for delete as print '這是我們的第一個觸發器'; select * from deleted; go create trigger tri_student_insert on student for insert as print '這是tri_student_insert'; go create trigger tri_student_delete_insert on student for insert,delete as print '觸發器'; go --洗掉一個學生資訊,如果學生的年齡<21,則不進行洗掉 create trigger tri_stu_delete on student for delete as declare @age int select @age=sage from deleted--deleted存盤執行洗掉的資料 if(@age<21) begin raiserror('學生年齡太小,手下留情!',18,11); rollback;--撤銷執行的操作 end go
序列
Create Sequence gygddj_cfjczb_Sequence Increment by 1 -- 每次加幾個 start with 1 -- 從1開始計數 nomaxvalue -- 不設定最大值,設定最大值:maxvalue 9999 nocycle -- 一直累加,不回圈 cache 10;
可以與序列配合使用(實作自增)
Create trigger gygddj_cfjczb_Sequence before insert on gygddj_cfjczb for each row /*對每一行都檢測是否觸發*/ begin select gygddj_cfjczb_Sequence.nextval into:New.AUTOID from dual; end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/28219.html
標籤:Oracle
上一篇:oracle資料庫執行sql檔案
