sql server觸發器操作例項

2021-07-14 12:10:55 字數 2272 閱讀 1063

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內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...