日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

使用SQL語句創(chuàng)建觸發(fā)器的實例

瀏覽:70日期:2023-09-28 21:00:59
目錄前言一、觸發(fā)器的介紹1.1 觸發(fā)器 的概念以及定義:1.2 、 觸發(fā)器 的作用二、 觸發(fā)器 的種類三、使用SQL語句創(chuàng)建觸發(fā)器實例1.創(chuàng)建after融發(fā)器2.創(chuàng)建instead of觸發(fā)器

前言一、觸發(fā)器的介紹1.1 觸發(fā)器 的概念以及定義:

觸發(fā)器 是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。存儲過程可以通過語句直接調(diào)用,而 觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的.例如當(dāng)對某一表進(jìn)行諸如UPDATE(修改)、INSERT(插入)、DELETE(刪除)這些操作時,SQL Server 就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數(shù)據(jù)之間的相互關(guān)系,實時更新.

1.2 、 觸發(fā)器 的作用

觸發(fā)器的主要作用就是其能夠?qū)崿F(xiàn)由 主鍵 和 外鍵 所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。除此之外, 觸發(fā)器 還有其它許多不同的功能:

①、復(fù)雜的約束條件觸發(fā)器 能夠?qū)崿F(xiàn)比CHECK 語句更為復(fù)雜的約束。

②、保證數(shù)據(jù)的安全

觸發(fā)器 因為 觸發(fā)器是在對數(shù)據(jù)庫進(jìn)行相應(yīng)的操作而自動被觸發(fā)的SQL語句可以通過數(shù)據(jù)庫內(nèi)的操作從而不允許數(shù)據(jù)庫中未經(jīng)許可的指定更新和變化。

③.級聯(lián)式

觸發(fā)器 可以根據(jù)數(shù)據(jù)庫內(nèi)的操作,并自動地級聯(lián)影響整個數(shù)據(jù)庫的各項內(nèi)容。例如:對A表進(jìn)行操作時,導(dǎo)致A表上的 觸發(fā)器被觸發(fā),A中的 觸發(fā)器中包含有對B表的數(shù)據(jù)操作(UPDATE(修改)、INSERT(插入)、DELETE(刪除)),而該操作又導(dǎo)致B表上 觸發(fā)器被觸發(fā)。

④.調(diào)用存儲過程

為了響應(yīng)數(shù)據(jù)庫更新, 觸發(fā)器 可以調(diào)用一個或多個存儲過程.

但是,總體而言, 觸發(fā)器性能通常比較低。

二、 觸發(fā)器 的種類

SQL Server 中一般支持以下兩種類型的觸發(fā)器:

AFTER 觸發(fā)器

  AFTER 觸發(fā)器 要求只有執(zhí)行某一操作(INSERT、UPDATE、DELETE)之后, 觸發(fā)器 才被觸發(fā),且只能在表上定義。可以為針對表的同一操作定義多個 觸發(fā)器 。2. INSTEAD OF 觸發(fā)器 。

  INSTEAD OF 觸發(fā)器 表示并不執(zhí)行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執(zhí)行 觸發(fā)器 本身。既可在表上定義INSTEAD OF 觸發(fā)器 ,也可以在視圖上定義INSTEAD OF 觸發(fā)器 ,但對同一操作只能定義一個INSTEAD OF 觸發(fā)器 。

三、使用SQL語句創(chuàng)建觸發(fā)器實例1.創(chuàng)建after融發(fā)器

(1)創(chuàng)建一個在插入時觸發(fā)的觸發(fā)器sc_insert,當(dāng)向sc表插入數(shù)據(jù)時,須確保插入的學(xué)號已在student表中存在,并且還須確保插入的課程號在Course表中存在﹔若不存在,則給出相應(yīng)的提示信息,并取消插入操作,提示信息要求指明插入信息是學(xué)號不滿足條件還是課程號不滿足條件(注:Student表與sc表的外鍵約束要先取消)。

語句實現(xiàn):

create trigger sc_inserton scafter insertasif not exists (select * from student,insertedwhere student.sno=inserted.sno)beginprint '插入信息的學(xué)號不在學(xué)生表中! 'if not exists (select * from course,inserted wherecourse.cno=inserted. cno)print '插入信息的課程號不在課程表中!'rollbackend elsebeginif not exists (select * from course,inserted whereCourse.cno=inserted.cno)beginprint '插入信息的課程號不在課程表中! 'rollbackendend

執(zhí)行:

insert into scvalues ( '20110112','001','78')

刪除外鍵約束;

alter table scdrop constraint FK_sc__sno__332C9D34

(2)為Course表創(chuàng)建一個觸發(fā)器Course_del,當(dāng)刪除了Course表中的一條課程信息時,同時將表sc表中相應(yīng)的學(xué)生選課記錄刪除掉。

create trigger course_delon courseafter deleteasif exists(select * from sc, deletedwhere sc.cno=deleted.cno)begindelete from scwhere sc.cno in (select cno from deleted)enddelete from Coursewhere Cno='003'

select * from sc

(3)在Course表中添加一個平均成績avg_Grade字段(記錄每門課程的平均成績),創(chuàng)建一個觸發(fā)器Grade_modify,當(dāng)sc表中的某學(xué)生的成績發(fā)生變化時,則Course表中的平均成績也能及時相應(yīng)的發(fā)生改變。

向Course表中添加一個平均成績avg_Grade字段

alter table Courseadd avg_Grade smallint

向avg_Grade中添加數(shù)據(jù)

update courseset avg_Grade= (select AVG(Grade) from scwhere sc.Cno=Course.Cno)

查看Course表:

select *from Course

創(chuàng)建Grade_modify觸發(fā)器

create trigger Grade_modifyon scafter updateasif update(grade)beginupdate courseset avg_grade=(select avg (grade)from sc where course.cno=sc.cnogroup by cno)endupdate scset Grade='90 'where sno='20050001' and cno='001'2.創(chuàng)建instead of觸發(fā)器

(1)創(chuàng)建一視圖Student_view,包含學(xué)號、姓名、課程號、課程名、成績等屬性,在Student_view上創(chuàng)建一個觸發(fā)器Grade_moidfy,當(dāng)對Student_view中的學(xué)生的成績進(jìn)行修改時,實際修改的是sc中的相應(yīng)記錄。

創(chuàng)建視圖:

create view student_viewasselect s.Sno,Sname , c.Cno , Cname , Gradefrom student s , course c, scwhere s.Sno=sc.sno and c.Cno=sc.cno

創(chuàng)建觸發(fā)器:

create trigger Grade_moidfy on student_viewinstead of updateasif UPDATE (Grade)beginupdate scset Grade= (select Grade from inserted) whereSno= (select sno from inserted) and Cno= (select Cno from inserted)Endupdate student_viewset Grade=40where Sno='20110001'and Cno='002'

測試修改數(shù)據(jù):

select *from student_view

(2)在sc表中插入一個getcredit字段(記錄某學(xué)生,所選課程所獲學(xué)分的情況),創(chuàng)建一個觸發(fā)器ins_credit,當(dāng)更改(注:含插入時)sc表中的學(xué)生成績時,如果新成績大于等于60分,則該生可獲得這門課的學(xué)分,且該學(xué)分須與Course表中的值一致﹔如果新成績小于60分,則該生未能獲得學(xué)分,修改值為0。

添加新字段getcredit :

alter table scadd getcredit smallint

創(chuàng)建觸發(fā)器:

create trigger sc_upon scafter insert,updateasdeclare @xf int,@kch char(3),@xh char(8),@fs intselect @fs=grade,@kch=cno,@xh=sno from insertedif @fs>=60update sc set @xf=(select credit from course wheresc.Cno=course.cno) where sno=@xh and cno=@kchelseupdate sc set @xf=0 where sno=@xh and cno=@kch修改數(shù)據(jù):update scset Grade='90'where Sno='20050001' and cno='001'

以上就是對觸發(fā)器的基本認(rèn)識了,希望對大家有所幫助.

到此這篇關(guān)于使用SQL語句創(chuàng)建觸發(fā)器的實例的文章就介紹到這了,更多相關(guān)SQL創(chuàng)建觸發(fā)器內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MsSQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费观看久久久4p| 免费亚洲一区| 麻豆久久一区| 亚洲激情中文在线| 成人污污视频| 视频一区在线播放| 欧美大黑bbbbbbbbb在线| yellow在线观看网址| 欧美日韩一区自拍| 免费不卡在线视频| 一区三区视频| 狠狠爱成人网| 久久中文字幕av| 香蕉视频亚洲一级| 日韩欧美一区二区三区在线视频| 国产精品99久久久久久董美香| 日韩黄色在线观看| 日韩高清欧美激情| 亚洲欧洲国产精品一区| 一区二区三区四区在线看| 精品网站999| 国产成人免费| 国产suv精品一区二区四区视频 | 91精品国产自产在线丝袜啪| 99在线观看免费视频精品观看| 蜜桃精品在线| 激情综合婷婷| 在线亚洲人成| 久久国产中文字幕| 91精品成人| 亚洲免费网址| 日韩大片免费观看| 7777精品| 精品国产午夜| 中文日韩欧美| 奇米狠狠一区二区三区| 美女视频黄久久| 黑人精品一区| 三级欧美在线一区| 国产精品a久久久久| 精品国产亚洲日本| 91麻豆精品激情在线观看最新| 伊人久久一区| 久久99精品久久久久久园产越南| 国产精品一区二区中文字幕| 黑人精品一区| 蜜臀久久久久久久| 日韩不卡一区二区三区| 欧美亚洲国产日韩| 日韩欧美二区| 日本不卡一二三区黄网| 国产一区二区三区亚洲| 国产美女视频一区二区| 久久夜夜操妹子| 久久精品av麻豆的观看方式| 日韩欧美一区二区三区在线视频| 99在线观看免费视频精品观看| 日本午夜精品视频在线观看| 精品视频一区二区三区在线观看 | 日韩精品一级中文字幕精品视频免费观看| 亚洲欧洲国产精品一区| 国产精品白丝久久av网站| 国产亚洲毛片在线| 欧美午夜精彩| 日韩天堂av| 男女性色大片免费观看一区二区| 精品视频自拍| 国产精品亚洲人成在99www| 蜜桃久久av| 欧美一区二区三区激情视频| 国产精品国产三级在线观看| 日韩影院精彩在线| 一区二区国产在线| 丝袜脚交一区二区| 精品中文一区| 欧美日韩国产在线观看网站 | 中文在线а√天堂| 免费日韩一区二区三区| 国产精品自拍区| 国产亚洲观看| 欧美日韩一区二区三区不卡视频| 亚洲性视频在线| 一本一道久久a久久| 亚洲三级网站| 欧美日韩亚洲一区| 国产精品传媒麻豆hd| 日韩av中文在线观看| 国产精品流白浆在线观看| 久久国产三级| 国产麻豆一区| 福利一区二区三区视频在线观看| 九九99久久精品在免费线bt| 国产精品国产一区| 日韩毛片视频| 免费久久精品| 男女激情视频一区| 欧美亚洲网站| 一区二区精品伦理...| 久久九九精品| 中文字幕中文字幕精品| 国产精品激情电影| 成人美女视频| 日日夜夜免费精品视频| 精品网站aaa| 欧美黄色网页| 亚洲一区二区三区中文字幕在线观看| 日韩av一区二区三区四区| 久久精品五月| 国产精品毛片| 精品久久99| 亚洲天堂日韩在线| 色综合五月天| 亚洲精一区二区三区| 国产成人黄色| 亚洲天堂免费| 日韩久久精品网| 日韩国产在线观看| 伊人久久大香线蕉av不卡| 热久久久久久| 日本免费一区二区三区四区| 丝袜美腿亚洲色图| 日韩国产欧美| 日韩激情av在线| 欧美日韩一二| 国产精品任我爽爆在线播放| 精品亚洲美女网站| 久久av国产紧身裤| 日韩三区四区| 亚洲综合电影一区二区三区| sm久久捆绑调教精品一区| 久久激情av| 视频一区中文字幕精品| 欧美一区二区三区高清视频| 精品久久国产一区| 日韩精品视频网站| 亚洲综合丁香| 香蕉久久国产| 六月婷婷一区| 伊人久久婷婷| 99视频精品全国免费| 美女久久久精品| 美日韩一区二区三区| 日韩欧美三区| 夜夜精品视频| 国产成人精品999在线观看| 久久精品99国产国产精| 亚洲精品进入| 日韩精品视频中文字幕| 色综合视频一区二区三区日韩| 亚洲精品观看| 日韩av一区二区三区| 日韩精品一二三| 蜜桃视频一区二区三区| 欧美亚洲免费| 国产 日韩 欧美一区| 国产专区一区| 日韩精品中文字幕吗一区二区| 欧美在线首页| 欧美日韩中文一区二区| 婷婷成人av| 日韩国产欧美一区二区| 免费成人av在线播放| 九九久久国产| 视频一区国产视频| 国产精品一在线观看| 亚洲大片在线| 麻豆久久久久久久| 香蕉久久国产| 精品入口麻豆88视频| 亚洲欧美日韩高清在线| 精品视频一二| 亚洲精品国产精品粉嫩| 日韩中文首页| 国产精品久久久久久久久免费高清 | 国内精品亚洲| 日韩精品社区| 亚洲精品国产偷自在线观看| 蜜臀国产一区二区三区在线播放| 黄色在线网站噜噜噜| 国产精品第一国产精品| 亚洲久久一区| 久久最新视频| 日韩在线一二三区| 欧美综合国产| 国产精品88久久久久久| 国产精品亚洲一区二区三区在线观看| 国产精品99精品一区二区三区∴ | 国产精品久久久亚洲一区| 日韩一区精品视频| 一区免费在线| 日韩视频一区| 99日韩精品| 日韩精品一区二区三区中文字幕| 老司机精品久久| 亚洲久久视频| 国产欧美一区二区三区米奇| 国产精久久久| 毛片在线网站| 99成人在线| 视频一区日韩精品|