dml觸發器分為:
1、 after觸發器(之後觸發)
a、 insert觸發器
b、 update觸發器
c、 delete觸發器
2、 instead of 觸發器 (之前觸發)
其中after觸發器要求只有執行某一操作insert、update、delete之後觸發器才被觸發,且只能定義在表上。而instead of觸發器表示並不執行其定義的操作(insert、update、delete)而僅是執行觸發器本身。既可以在表上定義instead of觸發器,也可以在檢視上定義。
觸發器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。有系統在記憶體中建立者兩張表,不會儲存在資料庫中。而且兩張表的都是唯讀的,只能讀取資料而不能修改資料。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被刪除。inserted表的資料是插入或是修改後的資料,而deleted表的資料是更新前的或是刪除的資料。
建庫建表:
use master
go--檢驗資料庫是否存在,如果為真,刪除此資料庫--
if exists(select * from sysdatabases where name='bookdb')
drop database bookdb
gocreate database bookdbgo
--建資料表--
use bookdb
gocreate table book --圖書表
( bid char(10) primary key, --圖書編號
title char(50) not null, --書名
author char(20) not null, --作者)go
create table book_copy --圖書備份表
( bid char(10) primary key, --圖書編號
title char(50) not null, --書名
author char(20) not null, --作者)go
--圖書資訊表中插入資料--
insert into book(bid,title,author)values('b001','人生若只如初見','安意如')
insert into book(bid,title,author)values('b002','入學那天遇見你','晴空')
insert into book(bid,title,author)values('b003','感謝折磨你的人','如娜')
insert into book(bid,title,author)values('b004','我不是教你詐','劉庸')
insert into book(bid,title,author)values('b005','英語四級','白雪')
觸發器例項:
--delete刪除型別觸發器
if (object_id('tgr_book_delete', 'tr') is not null)
drop trigger tgr_book_delete
gocreate trigger tgr_book_delete
on book
for delete --刪除觸發
as print '備份資料中……';
if (object_id('book_copy', 'u') is not null)
--存在book_copy,直接插入資料
insert into book_copy select * from deleted;
else
--不存在classesbackup建立再插入
select * into book_copy from deleted;
print '備份資料成功!';
go--
--不顯示影響行數
--set nocount on;
測試:delete book where bid = 'b001' or bid='b005';
sqlserver觸發器複習
create table a a1 int,a2 int create table b b1 int,b2 int insert into a values 1,0 insert into b values 1,0 create trigger tri update a2 a on a for up...
SQL server 之 觸發器
今天對觸發器研究了一下,之前的學習感覺挺朦朧的,今天鼓搗了一天,算是有了一點點了解,把學習的體會記錄了下來。常見的觸發器 觸發器的作用 自動化操作,減少了手動操作以及出錯的機率 現實工作中用的比較少,因為想讓他執行起來效率高很難 一 dml觸發器 insert delete update 不支援se...
SQLSERVER的觸發器
觸發器的定義 觸發器是一種特殊型別的儲存過程,他不同於前面介紹過的一般的儲存過程 在sql內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...