国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

Sql Server觸發(fā)器的原理
2007-07-29   賽迪網(wǎng)

1、觸發(fā)器的 '本質(zhì)':

觸發(fā)器是一種特殊的存儲過程,它不能被顯式地調(diào)用,

而是在往表中插入記錄、更改記錄或者刪除記錄時,當事件發(fā)生時,才被

自動地激活。

2、這樣做帶來的 '功能':

觸發(fā)器可以用來對表實施復雜的完整性約束,保持數(shù)

據(jù)的一致性,當觸發(fā)器所保護的數(shù)據(jù)發(fā)生改變時,觸發(fā)器會自動被激活,

響應同時執(zhí)行一定的操作(對其它相關表的操作),從而保證對數(shù)據(jù)的不完整

性約束或不正確的修改。

觸發(fā)器可以查詢其它表,同時也可以執(zhí)行復雜的T-SQL語句。觸發(fā)器和引

發(fā)觸發(fā)器執(zhí)行的命令被當作一次事務處理,因此就具備了事務的所有特征。

注意: '事務具備什么特征?在觸發(fā)器中的作用?'

如果發(fā)現(xiàn)引起觸發(fā)器執(zhí)行的T-SQL語句執(zhí)行了一個非法操作,比如關于其它表的

相關性操作,發(fā)現(xiàn)數(shù)據(jù)丟失或需調(diào)用的數(shù)據(jù)不存在,那么就回滾到該事件執(zhí)行

前的SQL SERVER數(shù)據(jù)庫狀態(tài)。

3、觸發(fā)器的作用:

觸發(fā)器可以對數(shù)據(jù)庫進行級聯(lián)修改,這一點剛才已經(jīng)說過了。

需要說明的是: '觸發(fā)器和約束的關系和區(qū)別'

(1)一般來說,使用約束比使用觸發(fā)器效率更高。

(2)同時,觸發(fā)器可以完成比CHECK約束更復雜的限制。

說明:

2.1 與CHECK約束不同,在觸發(fā)器中可以引用其它的表。

2.2 觸發(fā)器可以發(fā)現(xiàn)改變前后表中數(shù)據(jù)的不一致,并根據(jù)這些不同來進行相應

的操作。

2.3 對于一個表不同的操作(INSERT、UPDATE、DELETE)可以采用不同的觸

發(fā)器,即使是對相同的語句也可以調(diào)用不同的觸發(fā)器來完成不同的操作。

舉例1:在簽訂一份訂單時,貨物的庫存量應減少。

問?這應用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

舉例2:正在進行整理的貨物不能下訂單。

問?這應用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

1、觸發(fā)器的 '本質(zhì)':

觸發(fā)器是一種特殊的存儲過程,它不能被顯式地調(diào)用,

而是在往表中插入記錄、更改記錄或者刪除記錄時,當事件發(fā)生時,才被

自動地激活。

2、這樣做帶來的 '功能':

觸發(fā)器可以用來對表實施復雜的完整性約束,保持數(shù)

據(jù)的一致性,當觸發(fā)器所保護的數(shù)據(jù)發(fā)生改變時,觸發(fā)器會自動被激活,

響應同時執(zhí)行一定的操作(對其它相關表的操作),從而保證對數(shù)據(jù)的不完整

性約束或不正確的修改。

觸發(fā)器可以查詢其它表,同時也可以執(zhí)行復雜的T-SQL語句。觸發(fā)器和引

發(fā)觸發(fā)器執(zhí)行的命令被當作一次事務處理,因此就具備了事務的所有特征。

注意: '事務具備什么特征?在觸發(fā)器中的作用?'

如果發(fā)現(xiàn)引起觸發(fā)器執(zhí)行的T-SQL語句執(zhí)行了一個非法操作,比如關于其它表的

相關性操作,發(fā)現(xiàn)數(shù)據(jù)丟失或需調(diào)用的數(shù)據(jù)不存在,那么就回滾到該事件執(zhí)行

前的SQL SERVER數(shù)據(jù)庫狀態(tài)。

3、觸發(fā)器的作用:

觸發(fā)器可以對數(shù)據(jù)庫進行級聯(lián)修改,這一點剛才已經(jīng)說過了。

需要說明的是: '觸發(fā)器和約束的關系和區(qū)別'

(1)一般來說,使用約束比使用觸發(fā)器效率更高。

(2)同時,觸發(fā)器可以完成比CHECK約束更復雜的限制。

說明:

2.1 與CHECK約束不同,在觸發(fā)器中可以引用其它的表。

2.2 觸發(fā)器可以發(fā)現(xiàn)改變前后表中數(shù)據(jù)的不一致,并根據(jù)這些不同來進行相應

的操作。

2.3 對于一個表不同的操作(INSERT、UPDATE、DELETE)可以采用不同的觸

發(fā)器,即使是對相同的語句也可以調(diào)用不同的觸發(fā)器來完成不同的操作。

舉例1:在簽訂一份訂單時,貨物的庫存量應減少。

問?這應用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

舉例2:正在進行整理的貨物不能下訂單。

問?這應用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

作業(yè)2:

在order_test表建立insert觸發(fā)器,當向order_test表插入一行,如果cust_test表中對應

記錄status值為1,說明處于準備狀態(tài)不能寫入該數(shù)據(jù)。

答案1:
use northwind
go
create trigger cust_orders_del1
on Cust_test
after delete
as 
delete from order_test
where CustomerID in
(select CustomerID from deleted)
go

答案2:
use northwind
go
create trigger cust_orders_ins2
on order_test
after insert
as
if (select cstatus from cust_test,inserted where 

cust_test.customerid=inserted.customerid)=1
begin
print 'The Goods is being processed'
rollback transaction
end
go

圖形化操作觸發(fā)器

11.3 查看觸發(fā)器情況

圖形化操作結(jié)合T-SQL命令

(1)sp_helptrigger 觸發(fā)器名

查看觸發(fā)器的名稱,擁有者和五個布爾值

supdate,isdelete,isinsert,isafter,isinsteadof

(2)sp_helptext 觸發(fā)器名

查看文本信息

(3)設置某一觸發(fā)器的無效和重新有效

無效:
use northwind
alter table 表名
disable trigger 觸發(fā)器名

重新有效:
use northwind
alter table 表名
enable trigger 觸發(fā)器名

(4)刪除觸發(fā)器

use northwind
drop trigger 觸發(fā)器名,觸發(fā)器名

作業(yè)3:

在order_test表上建立一個插入觸發(fā)器,在添加一個訂單時,減少cust_test表的相應貨物的記錄的庫存量。

作業(yè)4:

在order_test表上建立一個插入觸發(fā)器,規(guī)定訂單日期(Odate)不能手工修改。

作業(yè)5:

要求訂購的物品一定要在倉庫中有的,并且數(shù)量足夠

例6:

在order_test表上建立一個插入觸發(fā)器,同時插入多行數(shù)據(jù)時,要求訂購的物品一定要在倉庫中有的。

答案3:

use northwind
go 
create trigger cust_orders_ins3
on order_test
after insert
as 
update cust_test set cstorage=cstorage-inserted.orders
from cust_test,inserted
where cust_test.customerid=inserted.customerid

答案4:

use northwind
go
create trigger orderdateupdate
on order_test
after update
as
if update (odate)
begin
raiserror('Error',10,1)
rollback transaction
end

答案5:

use northwind
go
create trigger order_insert5
on order_test
after insert
as
begin
if(select count(*)
from cust_test,inserted
where cust_test.customerid=inserted.customerid)=0
begin
print 'No entry in goods for your order'
rollback transaction
end
if(select cust_test.cstorage from cust_test,inserted 
where cust_test.customerid=inserted.customerid)<
(select inserted.orders from cust_test,inserted 
where cust_test.customerid=inserted.customerid)
begin
print 'No enough entry in goods for your order'
rollback transaction
end
end

答案6:

use northwind
go
create trigger order_insert6
on order_test
after insert
as
if 
(select count(*) from cust_test,inserted
where cust_test.customerid=inserted.customerid)<>@@rowcount
--可以在觸發(fā)器邏輯中使用 @@ROWCOUNT 函數(shù)以區(qū)分單行插入和多行插入。
begin
delete order_test from order_test,inserted
where order_test.orderid=inserted.orderid and
inserted.customerid not in (select customerid from cust_test)
end

print @@rowcount

Transact-SQL 參考

SET ROWCOUNT

使 Microsoft? SQL Server? 在返回指定的行數(shù)之后停止處理查詢。

語法

SET ROWCOUNT { number | @number_var }

參數(shù)

number | @number_var

是在停止給定查詢之前要處理的行數(shù)(整數(shù))。

注釋

建議將當前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 語句重新編寫為使用 TOP 語法。有關更多信息,請參見 DELETE、INSERT 或 UPDATE。

對于在遠程表和本地及遠程分區(qū)視圖上執(zhí)行的 INSERT、UPDATE 和 DELETE 語句,忽略 SET ROWCOUNT 選項設置。

若要關閉該選項(以便返回所有的行),請將 SET ROWCOUNT 指定為 0。

說明 設置 SET ROWCOUNT 選項將使大多數(shù) Transact-SQL 語句在已受指定數(shù)目的行影響后停止處理。這包括觸發(fā)器和 INSERT、UPDATE 及 DELETE 等數(shù)據(jù)修改語句。ROWCOUNT 選項對動態(tài)游標無效,但限制鍵集的行集和不感知游標。使用該選項時應謹慎,它主要與 SELECT 語句一起使用。

如果行數(shù)的值較小,則 SET ROWCOUNT 替代 SELECT 語句 TOP 關鍵字。

SET ROWCOUNT 的設置是在執(zhí)行或運行時設置,而不是在分析時設置。

權(quán)限

SET ROWCOUNT 權(quán)限默認授予所有用戶。

示例

SET ROWCOUNT 在指定的行數(shù)后停止處理。在下例中,注意有 x 行滿足預付款少于或等于 $5,000 的條件;但是,從更新所返回的行數(shù)中可以看出并非所有的行都得到處理。ROWCOUNT 影響所有的 Transact-SQL 語句。

USE pubs
GO
SELECT count(*) AS Cnt
FROM titles 
WHERE advance >= 5000
GO

下面是結(jié)果集:

Cnt       
----------- 
11          

(1 row(s) affected)

現(xiàn)在,將 ROWCOUNT 設置為 4,并更新預付款等于或大于 $5,000 的所有行。
SET ROWCOUNT to 4.
SET ROWCOUNT 4
GO
UPDATE titles
SET advance = 5000
WHERE advance >= 5000
GO

熱詞搜索:

上一篇:SQL Server 2000 下日期操作的實用范例
下一篇:怎樣對SQL 數(shù)據(jù)表和數(shù)據(jù)庫進行迭代操作

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美三片在线视频观看| 亚洲视频免费在线| 国产乱色国产精品免费视频| 亚洲色图在线看| 日韩毛片高清在线播放| 中文字幕乱码一区二区免费| 欧美电影免费观看高清完整版在线 | 亚瑟在线精品视频| 久久精品人人做| 国产婷婷色一区二区三区| 久久精品视频一区二区| 国产精品久久久久永久免费观看| 中文字幕国产一区| 亚洲一区二区三区四区在线免费观看 | 久久久久国产精品麻豆ai换脸| 欧美一区2区视频在线观看| 日韩一区二区免费高清| 精品国产91洋老外米糕| 国产精品久久久久影院亚瑟| 亚洲一区二区三区四区的| 亚洲黄色小视频| 日韩av电影天堂| 丝袜亚洲另类欧美| 国产sm精品调教视频网站| 色综合视频在线观看| 欧美日韩国产经典色站一区二区三区 | 亚洲国产精品av| 日韩成人av影视| 91啦中文在线观看| 国产精品色噜噜| 激情综合色综合久久| 一本大道久久a久久综合婷婷| 91精品国产综合久久久久| 国产偷国产偷亚洲高清人白洁 | 国产成人综合在线播放| 9191国产精品| 亚洲一区二区三区在线看| 不卡av在线网| 国产精品国产三级国产aⅴ入口| 国产一区二区不卡在线| 日韩欧美国产综合一区| 五月婷婷综合在线| 91精品国产福利| 麻豆高清免费国产一区| 制服丝袜成人动漫| 午夜影院在线观看欧美| 91精品免费观看| 国产一区二区毛片| 国产精品国产三级国产专播品爱网| 国产精品1区2区3区在线观看| 久久综合资源网| 成人午夜视频在线| 伊人夜夜躁av伊人久久| 91精品国产品国语在线不卡| 美女视频一区二区三区| 欧美国产国产综合| 在线视频一区二区免费| 亚洲第一电影网| 欧美经典一区二区| 欧美人妇做爰xxxⅹ性高电影| 蜜臀a∨国产成人精品| 国产精品传媒在线| 欧美一级日韩一级| 欧美色窝79yyyycom| 成人午夜短视频| 久久不见久久见免费视频7| 国产日韩欧美a| 日韩精品一区二区三区老鸭窝| 成人一级视频在线观看| 久久99精品一区二区三区| 亚洲va在线va天堂| **欧美大码日韩| 国产片一区二区三区| 日韩视频国产视频| 在线观看av一区二区| 不卡av在线免费观看| 麻豆专区一区二区三区四区五区| 亚洲色图第一区| 亚洲欧美日韩成人高清在线一区| 日韩视频一区二区| 欧美一级高清片| 日韩欧美精品在线| 久久久国产精华| 国产欧美一二三区| 日韩美女视频一区| 久久久久久久久免费| 国产精品丝袜一区| 夜夜嗨av一区二区三区| 美女一区二区视频| 在线观看一区不卡| 日韩精品一区二区三区蜜臀| 中文字幕色av一区二区三区| 亚洲综合偷拍欧美一区色| 九九精品一区二区| 欧美日韩精品一区二区三区| 国产亚洲欧美色| 天天操天天干天天综合网| 成a人片国产精品| 日韩欧美一区二区免费| 国产精品免费视频网站| 国产精品77777| 日韩一区和二区| 亚洲精品乱码久久久久久黑人 | 欧美日韩卡一卡二| 国产精品美女一区二区三区| 国产一区二区免费视频| 精品免费国产二区三区| 日本欧美肥老太交大片| 制服丝袜中文字幕一区| 一区二区国产视频| 成人午夜免费视频| 337p亚洲精品色噜噜噜| 国产清纯在线一区二区www| 精品欧美乱码久久久久久| 亚洲成人免费观看| 日韩久久久久久| 蜜臀av亚洲一区中文字幕| 成人app网站| 一区二区三区日韩在线观看| 国产91精品久久久久久久网曝门| 欧美丰满美乳xxx高潮www| 亚洲一区二区视频在线观看| 国产午夜精品理论片a级大结局| 色狠狠综合天天综合综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美成人欧美edvon| 狠狠色丁香久久婷婷综| 亚洲色图在线播放| 欧美一区二区三区的| 免费成人在线播放| 欧美日本国产视频| 久久99深爱久久99精品| 久久这里只有精品6| 国产高清一区日本| 国产精品美女久久久久av爽李琼| 色狠狠一区二区| 国产精品一区二区不卡| 美女视频黄免费的久久 | 国产一区二三区| 懂色av中文字幕一区二区三区| 大桥未久av一区二区三区中文| 色综合视频一区二区三区高清| 欧美日韩日日夜夜| 日本一区二区三区电影| 亚洲18女电影在线观看| 色综合久久久久综合| 日韩欧美国产一区在线观看| 国产精品白丝在线| 奇米影视一区二区三区小说| 成人av午夜电影| 26uuu精品一区二区在线观看| 欧美羞羞免费网站| av电影天堂一区二区在线观看| 国产精品自在在线| 国产原创一区二区| 国产精品系列在线观看| 国产精品主播直播| 国产乱码精品一区二区三区忘忧草| 亚洲一区av在线| 亚洲免费观看高清完整版在线观看熊| 亚洲天堂中文字幕| 亚洲乱码中文字幕综合| 午夜精品久久久久久久久| 日韩激情中文字幕| 麻豆成人免费电影| 日韩电影在线观看一区| 国产精品久久看| 国产精品女同互慰在线看| 国产精品国产自产拍在线| 国产农村妇女毛片精品久久麻豆| 在线观看区一区二| 一区二区激情小说| 欧美自拍丝袜亚洲| 久久久久国色av免费看影院| 91精品国产综合久久香蕉麻豆| 在线观看日韩一区| 久久午夜老司机| 1024亚洲合集| 中文字幕日韩精品一区| 午夜电影网一区| 97久久久精品综合88久久| 亚洲另类春色校园小说| 成人国产亚洲欧美成人综合网| 欧美在线999| 久久久午夜电影| 国产精品三级av| 国产精品成人在线观看| av亚洲精华国产精华精| 精品亚洲成a人在线观看| 亚洲在线一区二区三区| 中文字幕精品在线不卡| 一区二区三区四区五区视频在线观看 | 中文字幕在线观看不卡| 国产综合色视频| 久久嫩草精品久久久久| 精品在线一区二区三区| 日韩一区二区影院| 国产一区二区三区在线观看免费视频| 日韩视频免费观看高清在线视频| 日本女人一区二区三区|