SQLserver中觸發器建立常用語句

2021-10-07 12:55:08 字數 1685 閱讀 6807

1 if update(列名)

檢查是否更新了某一列,用於 insert 或 update,不能用於 delete。

例:create trigger f

on tbl

for update

as if update(status) or update(title) --更新了 status 或 title 列

-------------------------------------------

2 rollback

事物回滾。

create trigger tr

on 表名

for update

as if update(username)

rollback tran

關鍵在最後兩句,其解釋為:如果更新了 username 列,就回滾事務。

-------------------------------------------

3 @@rowcount

系統變數,更改的行數。

@@rowcount返回受上一語句影響的行數,返回值型別為 int 整型。 如果行數大於 20 億,則需要使用 rowcount_big。

@@rowcount和@@error變數的值,在執行完一條語句後總是會發生變化,所以我們將他們作為判斷的依據的時候應該首先儲存在區域性變數中。他們反映的都是緊接著的上一條語句對他們的影響!

我們通常可以通過update、insert語句並使用@@rowcount來檢測是否更改了任何一些行。

-------------------------------------------

4 declare

宣告變數。

例:declare @n int --定義了乙個int型別的變數@n

-------------------------------------------

5 object_id

object_id(n'student_sum',n'u') is null--判斷student_sum表是否存在

-------------------------------------------

6 if not exists/exists

if not exists (select * from student_sum)--判斷表中是否有記錄

-------------------------------------------

7 if 特殊運算子

特殊運算子:in、not in、between…and…、like、not like、is null、is not null、some|any、all、exists、not exists。

例:if @a in('f','m')/(select子句) --若@a在'f'或'm'兩者之一或select子句

if @a between 0 and 100 --若@a在0-100之間

if @a like'd[0-9][0-9]' --若@a為dxx,x為0~9其中乙個

if @a is null --若@a為空值

if @a >= all/any/some(select子句) --若@a>=子句集合中所有/任意/某些

if exists(select子句) --子句集合是否至少有乙個元組

sql server中觸發器

觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。什麼是觸發器 觸發器對錶進行插入 更新 刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的...

SQL Server 建立觸發器(trigger)

觸發器簡介 觸發器是一種特殊的儲存過程,它的執行不是由程式呼叫,也不是手動執行,而是由事件來觸發。觸發器是當對某乙個表進行操作。例如 update insert delete這些操作的時候,系統會自動呼叫執行該錶上對應的觸發器。觸發器分類 1 dml 資料操縱語言 data manipulation...

SQL SERVER 2008 建立觸發器

sqlserver觸發器內insert,update,delete三種狀態 create trigger tri product ordersnapshot on t product for insert,update,delete 如if exists select from inserted a...