亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server觸發(fā)器創(chuàng)建、刪除、修改、查看示例代碼

添加時間:2014-12-11 2:19:33  添加: 思海網(wǎng)絡(luò) 
一: 觸發(fā)器是一種特殊的存儲過程﹐它不能被顯式地調(diào)用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發(fā)器可以用來實現(xiàn)對表實施復(fù)雜的完整性約束。 

二: SQL Server為每個觸發(fā)器都創(chuàng)建了兩個專用表:Inserted表和Deleted表。這兩個表。 

一: 觸發(fā)器是一種特殊的存儲過程﹐它不能被顯式地調(diào)用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發(fā)器可以用來實現(xiàn)對表實施復(fù)雜的完整性約`束。 

二: SQL Server為每個觸發(fā)器都創(chuàng)建了兩個專用表:Inserted表和Deleted表。這兩個表由系統(tǒng)來維護(hù)﹐它們存在于內(nèi)存中而不是在數(shù)據(jù)庫中。這兩個表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表的結(jié)構(gòu)相同。觸發(fā)器執(zhí)行 完成后﹐與該觸發(fā)器相關(guān)的這兩個表也被刪除。 
Deleted表存放由于執(zhí)行Delete或Update語句而要從表中刪除的所有行。 
Inserted表存放由于執(zhí)行Insert或Update語句而要向表中插入的所有行。 
三:Instead of 和 After觸發(fā)器 
SQL Server2000提供了兩種觸發(fā)器:Instead of 和After 觸發(fā)器。這兩種觸發(fā)器的差別在于他們被激活的同: 

Instead of觸發(fā)器用于替代引起觸發(fā)器執(zhí)行的T-SQL語句。除表之外﹐Instead of 觸發(fā)器也可以用于視圖﹐用來擴展視圖可以支持的更新操作。 

After觸發(fā)器在一個Insert,Update或Deleted語句之后執(zhí)行﹐進(jìn)行約束檢查等動作都在After觸發(fā)器被激活之前發(fā)生。After觸發(fā)器只能用于表。 

一個表或視圖的每一個修改動作(insert,update和delete)都可以有一個instead of 觸發(fā)器﹐一個表的每個修改動作都可以有多個After觸發(fā)器。 
四:觸發(fā)器的執(zhí)行過程 
如果一個Insert﹑update或者delete語句違反了約束﹐那幺After觸發(fā)器不會執(zhí)行﹐因為對約束的檢查是在After觸發(fā)器被激動之前發(fā)生的。所以After觸發(fā)器不能超越約束。 

Instead of 觸發(fā)器可以取代激發(fā)它的操作來執(zhí)行。它在Inserted表和Deleted表剛剛建立﹐其它任何操作還沒有發(fā)生時被執(zhí)行。因為Instead of 觸發(fā)器在約束之前執(zhí)行﹐所以它可以對約束進(jìn)行一些預(yù)處理。 

五:使用T-SQL語句來創(chuàng)建觸發(fā)器 

基本語句如下: 
create trigger trigger_name 
on {table_name view_name} 
{for After Instead of } 
[ insert, update,delete ] 
as 
sql_statement 

六:刪除觸發(fā)器: 

基本語句如下: 

drop trigger trigger_name 

七:查看數(shù)據(jù)庫中已有觸發(fā)器: 

-- 查看數(shù)據(jù)庫已有觸發(fā)器 
use jxcSoftware 
go 
select * from sysobjects where xtype='TR' 

-- 查看單個觸發(fā)器 
exec sp_helptext '觸發(fā)器名' 

八:修改觸發(fā)器: 

基本語句如下: 
alter trigger trigger_name 
on {table_name view_name} 
{for After Instead of } 
[ insert, update,delete ] 
as 
sql_statement 

九:相關(guān)示例: 
1:在Orders表中建立觸發(fā)器﹐當(dāng)向Orders表中插入一條訂單記錄時﹐檢查goods表的貨品狀態(tài)status是否為1(正在整理)﹐是﹐則不能往Orders表加入該訂單。 
create trigger orderinsert 
on orders 
after insert 
as 
if (select status from goods,inserted 
where goods.name=inserted.goodsname)=1 
begin 
print 'the goods is being processed' 
print 'the order cannot be committed' 
rollback transaction --回滾﹐避免加入 
end 
2:在Orders表建立一個插入觸發(fā)器﹐在添加一條訂單時﹐減少Goods表相應(yīng)的貨品記錄中的庫存。 
create trigger orderinsert1 
on orders 
after insert 
as 
update goods set storage=storage-inserted.quantity 
from goods,inserted 
where 
goods.name=inserted.goodsname 
3:在Goods表建立刪除觸發(fā)器﹐實現(xiàn)Goods表和Orders表的級聯(lián)刪除。 
create trigger goodsdelete 
on goods 
after delete 
as 
delete from orders 
where goodsname in 
(select name from deleted) 
4:在Orders表建立一個更新觸發(fā)器﹐監(jiān)視Orders表的訂單日期(OrderDate)列﹐使其不能手工修改. 
create trigger orderdateupdate 
on orders 
after update 
as 
if update(orderdate) 
begin 
raiserror(' orderdate cannot be modified',10,1) 
rollback transaction 
end 
5:在Orders表建立一個插入觸發(fā)器﹐保證向Orders表插入的貨品名必須要在Goods表中一定存在。 
create trigger orderinsert3 
on orders 
after insert 
as 
if (select count(*) from goods,inserted where goods.name=inserted.goodsname)=0 
begin 
print ' no entry in goods for this order' 
rollback transaction 
end 

6:Orders表建立一個插入觸發(fā)器,保證向Orders表插入的貨品信息要在Order表中添加 

alter trigger addOrder 
on Orders 
for insert 
as 
insert into Order 

select inserted.Id, inserted.goodName,inserted.Number from inserted

關(guān)鍵字:SQL Server、觸發(fā)器、數(shù)據(jù)庫

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機打開網(wǎng)站