日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

实验9 SQL Server 的触发器

發(fā)布時(shí)間:2023/12/1 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验9 SQL Server 的触发器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)驗(yàn)9 SQL Server 的觸發(fā)器

一、實(shí)驗(yàn)?zāi)康?br /> 1.了解觸發(fā)器的觸發(fā)過(guò)程和類型
2.通過(guò)執(zhí)行SQL腳本,掌握創(chuàng)建觸發(fā)器并測(cè)試觸發(fā)器
3.掌握通過(guò)使用觸發(fā)器維護(hù)數(shù)據(jù)完整性的方法。
二、實(shí)驗(yàn)要求
1.按指定要求創(chuàng)建觸發(fā)器。
三、實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)名為tr_age的觸發(fā)器,要求在插入和更新時(shí)檢查AGE是否在15到60之間,如不在15到60,則彈出“年齡不合法”提示信息,SQL代碼如下所示:

CREATE TRIGGER tr_age ON members FOR INSERT,UPDATE ASDECLARE @age INTSELECT @age = YEAR(GETDATE())-YEAR(m_birth)FROM insertedIF @age NOT BETWEEN 15 AND 60BEGINROLLBACK TRANSACTIONRAISERROR('年齡不合法',16,10)END 創(chuàng)建完觸發(fā)器tr_age后,再按F5執(zhí)行以下更新數(shù)據(jù)表memebers的SQL代碼: UPDATE members SET m_birth='2000-6-4' WHERE m_account='zhao888'

執(zhí)行此段SQL更新記錄代碼后,將在結(jié)果框中顯示以下消息,表示觸發(fā)了數(shù)據(jù)表memebers中的觸發(fā)器tr_age:

服務(wù)器: 消息 50000,級(jí)別 16,狀態(tài) 10,過(guò)程 tr_age,行 15 年齡不合法

同樣,執(zhí)行以下插入數(shù)據(jù)表members的SQL代碼,也一樣會(huì)觸發(fā)器在數(shù)據(jù)表members中定義的觸發(fā)器tr_age:

INSERT INTO members VALUES('dy','dy','女','1900-5-4','北京市',1000,'12345')

2.基于“商品表”創(chuàng)建AFTER INSERT觸發(fā)器tr_insert_price,實(shí)現(xiàn)新添記錄數(shù)據(jù)時(shí)商品的價(jià)格限制在10000以內(nèi),SQL代碼如下所示:

CREATE TRIGGER tr_insert_price ON products AFTER INSERT ASDECLARE @price moneySELECT @price = p_priceFROM insertedIF @price > 10000BEGINROLLBACK TRANSACTIONRAISERROR('商品價(jià)格超出范圍',16,10)END

3.查看所創(chuàng)建觸發(fā)器詳細(xì)信息,SQL代碼如下所示:

USE eshop EXEC sp_helptrigger members EXEC sp_helptext tr_age EXEC sp_helptrigger products EXEC sp_helptext tr_insert_price

4.添加如下記錄,測(cè)試tr_insert_price觸發(fā)器的功能。
‘0240810331’,‘奇瑞小轎車’,‘2005-06-13’,8,‘25860.0’,‘大折扣’

INSERT INTO products VALUES('','奇瑞小轎車','2005-06-13',8,25860.0,'大折扣')

再按F5或點(diǎn)擊工具欄上的運(yùn)行按鈕“”,運(yùn)行插入記錄到數(shù)據(jù)表的SQL代碼,將觸發(fā)在數(shù)據(jù)表中定義的觸發(fā)器,在結(jié)果框中顯示以下消息:

服務(wù)器: 消息 50000,級(jí)別 16,狀態(tài) 10,過(guò)程 tr_insert_price,行 14 商品價(jià)格超出范圍

5.基于“商品表”創(chuàng)建AFTER UPDATE觸發(fā)器tr_update_price,實(shí)現(xiàn)修改記錄數(shù)據(jù)時(shí)商品的價(jià)格限制在10000以內(nèi),SQL代碼如下所示:

CREATE TRIGGER tr_update_price ON products AFTER UPDATE ASDECLARE @price MONEYSELECT @price = p_priceFROM insertedIF @price > 10000BEGINROLLBACK TRANSACTIONRAISERROR('商品價(jià)格超出范圍',16,10)END

6.將商品號(hào)為“0130810324”的價(jià)格修改為12800,測(cè)試tr_update_price觸發(fā)器的功能。(T-SQL)在查詢分析器輸入如下更新數(shù)據(jù)表products中記錄的SQL代碼:

USE eshop UPDATE products SET p_price = 12800 WHERE p_no = ''

再按F5或點(diǎn)擊工具欄上的運(yùn)行按鈕“”,運(yùn)行插入記錄到數(shù)據(jù)表的SQL代碼,將觸發(fā)在數(shù)據(jù)表中定義的觸發(fā)器,在結(jié)果框中顯示以下消息:

服務(wù)器: 消息 50000,級(jí)別 16,狀態(tài) 10,過(guò)程 tr_update_price,行 14 商品價(jià)格超出范圍

四、注意事項(xiàng)
1.觸發(fā)器的類型
2.觸發(fā)器和約束的區(qū)別

總結(jié)

以上是生活随笔為你收集整理的实验9 SQL Server 的触发器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。