国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

sql中的觸發器、視圖、事務

2024-07-21 02:48:35
字體:
來源:轉載
供稿:網友
sql中的觸發器、視圖、事務

·觸發器(trigger)

【觸發器本質上還是一個存儲過程,只不過不是用exe來調用執行,而是通過增刪改數據庫的操作】

【觸發器只對增、刪、改有效】

觸發器的格式

(instead of與for的區別 如下)

instead of:

create trigger 觸發器名(TR_表名_操作)

on 表名

instead of 增或刪或改

--當為instead of時,go下的代碼不執行只起到觸發的作用,只執行as里面的代碼

as

as里面隨便寫代碼

go

go下的代碼只能是 增或刪或改

for:

create trigger 觸發器名(TR_表名_操作)

on 表名

for增或刪或改

--當為for時,go下的代碼先執行操作,再執行as里面的代碼

as

as里面隨便寫代碼

go

go下的代碼只能是 增或刪或改

寫觸發器時,go下面代碼中的增刪改和表名,與on后面的表名instead of或者for后面的增刪改差要一致,否則無法觸發

例子:(在觸發器中可以有參數)

Instead of實用:

create trigger dongtaichufa

on teacher

instead of delete

as

begin

declare @tno varchar(20)

set @tno=(select tno from deleted)--deleted的作用是儲存臨時數據(存儲的是tno為的一行數據),@tno=tno的含義是獲取教師工號

delete from teacher where tno=@tno--刪除這一條數據

end

go

delete from teacher where tno= '831'

for實用:

create trigger tr_dongtai

on teacher

for insert

as

begin

declare @tno varchar(20)--定義一個變量

set @tno=(select tno from inserted)--inserted的作用是臨時存儲數據,(存儲要插入的一行數據),@tno的含義是獲取要插入的教師的編號

delete from teacher where tno=@tno --刪除剛剛插入的一行數據

end

go

insert into teacher values('810','王五','男','1991-1-1','講師','電子工程系')

視圖(view)

1、視圖窗口創建視圖步驟:1·數據庫名-->右鍵視圖(新建視圖)-->2·添加要連接的表-->3·選擇要添加的列名

【代碼創建視圖】:

格式為:

create view 視圖名

as

select 表名.列名,表名.列名,表名.列名,表名.列名 from 表名 join 表名 on 表名.列名=表名.列名

--------------例如:

沒用視圖如下

用代碼創建視圖為:

create view shitu

as

select student.sno,sname,ssex,sbirthday,class,course.cno,cname,degree,tno from

student join score on student.sno=score.sno join course on score.cno=course.cno

事務

Begin tran----開始事務

Commit---提交

Rollback---回滾事務

---事務(在begin tran里面有多個代碼,如果有一個發生錯誤,則全部停止,并返回begin tran開始處)

實例:

begin tran--事務的開始

  insert into student values('110','hh','aa','1987/1/12',5788) —插入第一個數據為主鍵,110沒有重復的,正確

if @@ERROR >0 --全局變量,判斷上一句中是否有錯,返回0沒有錯,不等于0則發生錯誤

goto tr --如果發生錯誤,則跳轉到名字為tr的一行(goto后面的只是個名字而已)

  insert into course values('3-105','計算機',825) --第一個3-105則為外鍵,發生錯誤,表中有3-105

if @@ERROR >0

begin

tr: --接上面的tr

  rollback tran --回滾到tran開始處

end

else --如果沒有錯誤的話

begin

  commit tran --提交事務,接著往下運行

end


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台北市| 和政县| 天祝| 定西市| 乌鲁木齐县| 长顺县| 静海县| 徐水县| 瑞金市| 洪泽县| 离岛区| 剑阁县| 开阳县| 子洲县| 尤溪县| 巴青县| 公主岭市| 德昌县| 商洛市| 达尔| 湘潭市| 辰溪县| 洪雅县| 松潘县| 龙游县| 保德县| 大名县| 周宁县| 灯塔市| 琼结县| 明光市| 留坝县| 巨野县| 广南县| 永年县| 玉田县| 凌云县| 逊克县| 伊宁县| 宜春市| 湾仔区|