程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQLSever中的觸發器根本語法與感化

SQLSever中的觸發器根本語法與感化

編輯:MSSQL

SQLSever中的觸發器根本語法與感化。本站提示廣大學習愛好者:(SQLSever中的觸發器根本語法與感化)文章只能為提供參考,不一定能成為您想要的結果。以下是SQLSever中的觸發器根本語法與感化正文


有一個你們能夠從未據說的風趣的CSS功效是火狐閱讀器首創的-moz-element屬性,應用它,你可以用網頁上隨意率性的內容作為配景,跟配景圖的後果類似。

HTML和CSS代碼

假定你的網頁裡有如許一塊HTML內容,它有CSS款式,外面有文本信息,還有一些inline的CSS屬性:


<div id="mozElementBack"
>
我要成為配景
</div>
下面的代碼既有內部款式,又有inline款式,這不影響-moz-element的應用,如今我們便可以將這塊HTML作為其它元素的配景(background):


#mySpecialElement {
/* “mozElementBack” 是以後頁裡某個元素的ID */
background: -moz-element(#mozElementBack) repeat;
}
異常簡略,只須要將-moz-element設置成元素的ID,如許,這個元素所包括的區域就會成為配景,你還可使用background-repeat等參數潤飾它,跟通俗的配景圖的用法一樣。但以頁面元素做配景的一年夜亮點是,當你更新配景元素的HTML內容和款式時,配景同步產生變更,也就是說,你可以把它當做一個“活”配景!

一個奇異的CSS屬性,不是嗎?這類以一塊HTML內容做為配景的用處可以異常普遍,感激Mozilla。你能想出在實際項目中這個功效可以用在甚麼處所嗎?我先想到的一點就是用-moz-element將一段文字做配景,而這些文字是用JavaScript靜態寫上去的。一個風趣的CSS屬性!

可采用多個分歧的對策以呼應統一個修正語句。

DML觸發器分為:

1、 after觸發器(以後觸發)

a、 insert觸發器

b、 update觸發器

c、 delete觸發器

UPDATE 觸發器創立觸發的語法

CREATE TRIGGER trigger_name
ON table_name
[WITH ENCRYPTION]
FOR [DELETE, INSERT, UPDATE]
AS
T-SQL語句
GO

留意:WITH ENCRYPTION表現加密觸發器界說的SQL文本 DELETE, INSERT, UPDATE指定觸發器的類型 insert 觸發器示例

/*創立insert觸發器,在上彀記載表recordInfo上創立拔出觸發器*/
create trigger tr_insert_recordInfo
on recordInfo
for insert
as
/*界說變量,用於暫時存儲拔出的會員號、電腦編號和卡的編號*/
declare @cardId char()
declare @PCId int
declare @CardNumber char()
/*從inserted暫時表中獲得拔出的記載行的信息,包含電腦的編號、卡的編號*/
select @PCId=PCId,@cardId=CardId from inserted
/*依據電腦編號修正電腦的應用狀況*/
update PCInfo set PCUse= where PCId=@PCId
/*依據卡的編號查詢會員號*/
select @CardNumber=CardNumber from cardinfo where CardId=@cardid
/*顯示上機勝利的信息*/
print '上機勝利!會員號是:'+@CardNumber+'機械號是:'+convert(char(),@PCId)
go
----拔出測試數據,會員號為的上機
set nocount on --不顯示sql語句影響的記載行數
declare @CardId int ---聲明一個存儲卡的編號的變量
---依據會員號查處卡的編號
select @cardId=cardid from cardinfo where cardNumber='c' 
---向recordInfo表中拔出一筆記錄信息,卡的編號、電腦編號和上機時光
insert into recordInfo(cardId,PCId,beginTime) values(@cardId,,getDate())
----檢查成果
select * from recordInfo
select * from PCInfo

update觸發器示例

---創立delete觸發器,在上彀記載表RecordInfo上創立刪除觸發器
create trigger tr_delete_recordInfo
on recordInfo
for delete
as
if exists(select * from sysobjects where name='backRecordInfo')
----假如backrecordInfo表存在,就添加記載便可
insert into backRecordInfo select * from deleted
else
----創立backRecordInfo表,從deleted中獲得被刪除的數據
select * into backRecordInfo from deleted
print'backRecordInfo表備份數據勝利,備份表中的數據為:'
select * from backRecordInfo
go
-------症結代碼------
----測試delete觸發器,刪除數據
set nocount on
delete from recordInfo
---檢查成果
print'記載表中的數據為:'
select * from recordInfo

delete觸發器示例

-------症結代碼------
create trigger tr_update_recordInfo
on recordInfo
for update
as
declare @beforePCId int
declare @afterPCId int
select @beforePCId =PCId from deleted
select @afterPCId=PCID from inserted
---依據電腦編號修正應用狀況-----
---依據之前應用的電腦編號把電腦的應用狀況改成:
update PCInfo set PCUse= where PCId=@beforePCId
---依據如今應用的電腦編號把電腦的應用狀況改成:
update PCInfo set PCUse= where PCId=@afterPCId
----顯示電腦換機勝利
print'換機勝利!從'+convert(varchar(),@beforePCId)+'號電腦換到'+convert(varchar(),@afterPCId)+'號電腦'
go
/*測試update觸發器,修正電腦編號*/
--顯示更改前,記載表中的數據
print'更改前,記載表中的數據'
select * from recordInfo
--顯示更改前,電腦表中的數據
print'更改前,電腦表中的數據'
select * from PCInfo
set nocount on
---把電腦號為的改成
update recordInfo set PCId= where PCId= 
---檢查成果
print'更改後,記載表中的數據'
select * from recordInfo
print'更改後,電腦表中的數據'
select * from PCInfo

instead of觸發器的應用 instead of觸發器的應用規模,instead of 觸發器可以同時在數據表和視圖中應用。平日在以下幾種情形下,建議應用instead of觸發器: 數據庫裡的數據制止修正:例如電信部分的通話記載是不克不及修正的,一旦修正,則通話費用的計數將禁絕確。 有能夠要回滾修正的SQL語句 在視圖中應用觸發器 用本身的方法去修正數據 instead of觸發器示例

---創立update觸發器,在上彀記載表recordInfo上創立修正(列)觸發器
create trigger tr_updateColum1_recordInfo
on recordInfo
instead of insert
as
declare @cardbalance int --聲明用於存儲用戶余額的變量
declare @CardId int --聲明用於存儲用戶卡的編號的變量
declare @PCId int --聲明用於存儲電腦編號的變量
---inserted暫時表中獲得拔出的記載行信息,包含電腦編號、卡的編號
select @cardId=cardId,@PCId=PCId from inserted
select @cardbalance=cardBalance from cardInfo where CardId=@CardId
print'您的余額為:'+convert(varchar(10),@cardBalance) ---打印余額信息
if(@cardBalance<2) ---斷定余額若干,看可否正常上機
print'余額小於元,不克不及上機。請盡快充值!'
else
----依據電腦的編號修正電腦的應用狀況更改成正在應用
update PCInfo set PCUse=1 where PCId=@PCId
----向recordInfo表拔出上機記載
insert into recordInfo(cardId,PCId,beginTime)values(@CardId,@PCId,getdate())
print'上機勝利'
-------症結代碼------
set nocount on
declare @cardId int ---聲明一個存儲卡的編號的變量
---依據會員號查出卡的編號
select @cardId=cardId from cardInfo where cardNumber='c001'
----向recordInfo表中拔出一筆記錄信息,卡的編號、電腦的編號和上機時光
insert into recordInfo(cardId,PCId,beginTime)values(@cardId,1,getdate())
select * from recordInfo
select * from PCInfo

以上所述是小編給年夜家引見的SQLSever中的觸發器根本語法與感化的相干內容,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved