觸發(fā)器的編寫(xiě)方法:
創(chuàng)新互聯(lián)公司從2013年成立,先為西秀等服務(wù)建站,西秀等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為西秀企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
sql觸發(fā)器編寫(xiě)方法
----是不是訂單關(guān)系表的觸發(fā)器啊,是不是說(shuō)錯(cuò)了啊
----如果是產(chǎn)品關(guān)系表,沒(méi)有看見(jiàn)產(chǎn)品關(guān)系表和訂單關(guān)系表的關(guān)聯(lián)關(guān)系哦!
create??trigger??tr_TableB_ins
on??[訂單關(guān)系表]
for?insert
as
insert?into?[訂單日志表]([訂單號(hào)],[操作時(shí)間])?
select?[訂單號(hào)],getdate()?from?
from?inserted?
go;
通常創(chuàng)建觸發(fā)器以在不同表中的邏輯相關(guān)數(shù)據(jù)之間實(shí)施引用完整性或一致性。例子: -- 創(chuàng)建一個(gè)表(數(shù)據(jù)庫(kù)設(shè)計(jì)的部分) Create Table OrderLog ( EditDate smalldatetime ) -- 創(chuàng)建觸發(fā)器,當(dāng)OrderList表被UPDATE的時(shí)候,執(zhí)行一段操作
create?TRIGGER?Update_S?on?td_material
for?update
as
begin
declare?@weightBefore?nvarchar(4000)
declare?@weightAfter?nvarchar(4000)
declare?@priceBefore?decimal(18,2)
declare?@priceAfter?decimal(18,2)
set?@weightBefore=(select?weight?From?deleted)
set?@priceBefore=(select?price?From?deleted)
set?@weightAfter=(select?weight?From?Inserted)
set?@priceAfter=(select?price?From?Inserted)
update?te_recipe?set?weight=@weightAfter?where?weight=@weightBefore;
update?te_recipe?set?price=@priceAfter?where?price=@priceBefore;?
end
如果是單純的更新,上面就可以了
如果還有其他條件,比如id相同什么的參考上面的添加相應(yīng)的邏輯就可以了
--創(chuàng)建一個(gè)針對(duì)于users表的叫insTomod的觸發(fā)器
create
trigger
insTomod
on
users
after
insert,update
--當(dāng)插入或修改時(shí)觸發(fā)
as
--觸發(fā)后執(zhí)行的操作。
update
users
set
age=20
where
uid
in
(select
uid
from
inserted)
update
users
set
age=20
where
age
is
null
go
SQL SERVER中觸發(fā)器的觸發(fā)類型有三種。
1、DML觸發(fā)器,當(dāng)數(shù)據(jù)庫(kù)中表中的數(shù)據(jù)發(fā)生變化時(shí),包括insert,update,delete任意操作,如果對(duì)該表寫(xiě)了對(duì)應(yīng)的DML觸發(fā)器,那么該觸發(fā)器自動(dòng)執(zhí)行。
2、DDL觸發(fā)器,是Sql Server2005新增的觸發(fā)器,主要用于審核與規(guī)范對(duì)數(shù)據(jù)庫(kù)中表,觸發(fā)器,視圖等結(jié)構(gòu)上的操作。比如在修改表,修改列,新增表,新增列等。它在數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化時(shí)執(zhí)行,主要用它來(lái)記錄數(shù)據(jù)庫(kù)的修改過(guò)程,以及限制程序員對(duì)數(shù)據(jù)庫(kù)的修改。
3、登錄觸發(fā)器,登錄觸發(fā)器將為響應(yīng) LOGIN 事件而激發(fā)存儲(chǔ)過(guò)程。與 SQL Server 實(shí)例建立用戶會(huì)話時(shí)將引發(fā)此事件。登錄觸發(fā)器將在登錄的身份驗(yàn)證階段完成之后且用戶會(huì)話實(shí)際建立之前激發(fā)。
擴(kuò)展資料:
DML觸發(fā)器的主要作用在于強(qiáng)制執(zhí)行業(yè) 務(wù)規(guī)則,以及擴(kuò)展Sql Server約束,默認(rèn)值等。因?yàn)槲覀冎兰s束只能約束同一個(gè)表中的數(shù)據(jù),而觸發(fā)器中則可以執(zhí)行任意Sql命令。
來(lái)自登錄觸發(fā)器內(nèi)部且通常將到達(dá)用戶的所有消息(例如錯(cuò)誤消息和來(lái)自 PRINT 語(yǔ)句的消息)會(huì)傳送到 SQL Server 錯(cuò)誤日志。如果身份驗(yàn)證失敗,將不激發(fā)登錄觸發(fā)器。
觸發(fā)器可在寫(xiě)入數(shù)據(jù)表前,強(qiáng)制檢驗(yàn)或轉(zhuǎn)換數(shù)據(jù)。觸發(fā)器發(fā)生錯(cuò)誤時(shí),異動(dòng)的結(jié)果會(huì)被撤銷??梢勒仗囟ǖ那闆r,替換異動(dòng)的指令 (INSTEAD OF)。
SQL Server2000提供了兩種觸發(fā)器:“Instead of” 和“After” 觸發(fā)器。
一個(gè)表或視圖的每一個(gè)修改動(dòng)作(Insert、Update和Delete)都可以有一個(gè)“Instead of” 觸發(fā)器,一個(gè)表的每個(gè)修改動(dòng)作都可以有多個(gè)“After”觸發(fā)器。
create trigger trigger_name
on {table_name|view_name}
{After|Instead of} {insert|update|delete}
as 相應(yīng)T-SQL語(yǔ)句
本文標(biāo)題:觸發(fā)器sqlserver,觸發(fā)器功能測(cè)試實(shí)驗(yàn)報(bào)告
文章轉(zhuǎn)載:http://aaarwkj.com/article16/dssjhgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站建設(shè)、網(wǎng)站策劃、品牌網(wǎng)站制作、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)