1. 程式人生 > >SQL server 2008建立觸發器例項

SQL server 2008建立觸發器例項

觸發器定義以及分類:

觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。

Ø 什麼是觸發器

    觸發器對錶進行插入、更新、刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的區別是:觸發器是當對某一個表進行操作。諸如:update、insert、delete這些操作的時候,系統會自動呼叫執行該表上對應的觸發器。SQL Server 2005中觸發器可以分為兩類:DML觸發器和DDL觸發器,其中DDL觸發器它們會影響多種資料定義語言語句而激發,這些語句有create、alter、drop語句。

下面介紹一個觸發器insert 插入時會觸發的:

先在資料庫上面建立一個學生表:

create table students
(
ID int not null,
name char(10),
age char(2),
city varchar(12),
)

現在定義AGE年齡欄位插入資料值超過20時會觸發觸發器不讓操作。

下面是示例程式碼:

IF OBJECT_ID (N'TRIGER_Students_Insert', N'tr') IS NOT NULL
DROP TRIGGER TRIGER_Students_Insert;
GO
CREATE TRIGGER TRIGER_Students_Insert
ON Students
FOR INSERT
AS
declare @age int
select @age=Students.Age FROM Students INNER JOIN inserted ON Students.ID =inserted.ID
PRINT @age
if(@age<20)
begin
raiserror('學生年齡必須要大於20哦',20,8)
rollback tran
end

這樣我們插入資料試試:

INSERT INTO Students(ID,Name,Age,City) VALUES(106,'張飛',14,'BeiJing')

直接就不讓插入資料,和約束條件也是相類似的 。