mysql觸發器
1.建立觸發器
注意:觸發器只能建立在永久表上,不能對臨時表建立觸發器,語法如下:
create trigger trigger_name trigger_time trigger_event
on table_name for each row trigger_stmt
trigger_time:觸發器觸發的時間,可以使before或者after,before是指的在檢查約束前觸發,而after是檢查約 束后觸發.
trigger_event:觸發器觸發的事件,可以是insert,update或者delete.
使用別名old和new來引用觸發器中發生變化的記錄內容,現在觸發器還只支援行級觸發,不支援語句級觸發.
2.建立乙個student表,複製乙份命名為student_back:
create table `student` (
`id` int(11) not null auto_increment,
`name` varchar(255) default null,
`age` int(11) default null,
primary key (`id`)
) engine=innodb auto_increment=3 default charset=utf8;
3.建立觸發器:
delimiter $$
create trigger ins_stu after insert on student for each row
begin
insert into student_back (id, name, age)
values
(new.id, new. name, new.age) ;
end ;
delimiter ;
插入一條資料:
//注意:對於有重覆記錄需要進行update的insert,觸發器觸發的順序是before insert , before update ,after update;對於沒有重覆記錄的insert,就是簡單地執行insert操作,觸發器觸發的順序是before insert,after insert . 對於那些實際執行update操作的記錄,仍然會執行before insert觸發器的內容,在設計觸發器的時候一定要考慮這種情況,避免錯誤地觸發了觸發器.
4.刪除觸發器
drop trigger trigger_name
5.檢視觸發器
show triggers
觸發器臨時表Inserted deleted
觸發器語句中使用了兩種特殊的表 deleted 表和 inserted 表。microsoft sql server 2000 自動建立和管理這些表。可以使用這兩個臨時的駐留記憶體的表測試某些資料修改的效果及設定觸發器操作的條件 然而,不能直接對錶中的資料進行更改。inserted和deleted表...
SQLSERVER觸發器之臨時表
sql觸發器中,系統自動會生成兩張臨時表,分別是deleted 和 inserted 它們是邏輯 概念 表。也可理解為是臨時表。為方便理解,可以這麼來認為inserted表和deleted表的作用 inserted表就是放新的記錄,delete表就是放舊的記錄。並且,它們的表結構與原表是完全相同的。...
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...