機房重構(4) 觸發器的使用

2021-09-06 18:17:28 字數 2551 閱讀 8277

上篇文章《機房重構(3)——儲存過程》介紹了儲存過程的使用,接下來介紹一下觸發器的使用。說到觸發器,我們並不陌生,我們學習過程中涉及到非常多相關的知識,可是欠缺的實踐應用。通過這次機房收費,對觸發器有了進一步的理解。

1、簡單介紹

觸發器也是一種與表事件相關的特殊的儲存過程。由事件來觸發,當對乙個表進行操作(insert,delete,update)時就會啟用它執行。經經常使用於加強資料的完整性約束和業務規則等。它與儲存過程的差別是觸發器不能執行excute語句呼叫,而是在使用者執行transact_sql語句是自己主動觸發執行。

2、分類

sql sever包含三種常規型別的觸發器:

1)dml觸發器(經常使用)

假設我們對某個表謝了相應的dml觸發器,當資料庫表中的資料發生相應的變化時(insert,delete,update),該觸發器自己主動執行。其主要作用是強制執行業務規則,擴充套件sql sever 約束、預設值等。

可分為:

a、after 觸發器

包含insert觸發器、update觸發器和delete觸發器,在這些操作執行後觸發器才幹觸發,且僅僅能定義在表上。

b、instead of 觸發器

並不執行定義的相關操作,而是僅執行觸發器本身。instead of 觸發器能夠在表上定義,也能夠在試圖上定義。

2)ddl觸發器

主要用於審核與規範資料庫中表、觸發器、檢視等結構上的操作。在資料庫結構發生變化時執行(改動和新增列、新增表等),主要用來記錄資料庫的改動過程,以及限制程式猿對資料庫的改動。

3)登入觸發器

響應login時間而激發的儲存過程。登入觸發器在登入的身份驗證階段完畢之後切使用者會話實際建立之前激發。假設身份驗證失敗,將不激發登入觸發器。

3、作用

a、同意/限制對錶的改動

b、自己主動派生列,如自增欄位

c、強制資料的一致性

d、提供審計和日誌記錄

e 、防止無效的事務處理

4、例項應用

為了在實踐中熟悉觸發器,在機房收費註冊功能中應用了觸發器。以此展示觸發器的建立過程。

由插入insert學生資訊表的資料觸發此觸發器,進行登錄檔和充值表的記錄的插入操作,詳細例如以下:

1)在t_stuinfo表下建立觸發器

2)編寫語句

use [jf_sys]

go/****** object: trigger [dbo].[register] script date: 2014/8/11 21:06:12 ******/

set ansi_nulls on

goset quoted_identifier on

goalter trigger [dbo].[register] --建立觸發器

on [dbo].[t_stuinfo]

after insert

as declare @cardid varchar(10), --引數

@stuid varchar(10),

@regdate varchar(10),

@regtime varchar(10),

@userid varchar(10),

@regcash varchar(15),

@checkstatus varchar(10)

select @cardid=cardid ,@userid =userid from inserted

select @regcash =stucash from inserted

select @stuid=stuid from inserted

set @regdate =convert (varchar (10),getdate (),120) --獲取日期

set @regtime =convert (varchar (10),getdate (),108) --獲取時間

begin

--引發操作:向登錄檔和充值表中插入資料

insert into t_reginfo (cardid ,stuid ,regdate ,regtime ,userid ,regcash ,checkstatus ) values (@cardid , @stuid,@regdate,@regtime,@userid,@regcash,'未結賬')

insert into t_rechargeinfo (cardid,recdate,rectime,reccash,userid,checkstatus ) values (@cardid ,@regdate ,@regtime ,@regcash,@userid,'未結賬')

end

機房收費系統之觸發器的使用

不過這次敲個人版機房收費系統,自己實際去運用了一下觸發器,感覺它太給力了,節省了很多不必要的 了,減輕了系統的負擔。還節省了很多時間。真是既省時又省力。廢話不多說了,接下來在簡單嘮叨幾句什麼是觸發器,觸發器的好處以及注意事項和自己在機房時所用的觸發器例項。觸發器 trigger 是sql serve...

機房收費系統之觸發器

首先我們看看觸發器是什麼?觸發器,由於我先認識的儲存過程 事務。所以我在這裡把他稱為儲存過程的小兄弟,至於為什麼,由於他們真的非常像,對於儲存過程,大家能夠在了解,這裡就不具體的介紹了。可是觸發器是什麼呢?觸發器是sql server提供給程式猿和資料分析員來保證資料完整性的一種方式,它就是與表事件...

積分觸發器 mysql 觸發器的使用

將多個資料庫中的某列資料同步時需要用到mysql觸發器,以下可做參考,已簡單測試ok.修改紅棗的積分時觸發 drop trigger if exists u hongzaocount delimiter create trigger u hongzaocount after update on ho...