数据库视频总结四(存储过程和触发器)
1、存儲(chǔ)過(guò)程
概念:它是一組未來(lái)完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中。存儲(chǔ)過(guò)程可包含程序流,邏輯以及對(duì)數(shù)據(jù)庫(kù)的查詢。它們可以接受參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值。
作用:
與其他程序共享應(yīng)用程序邏輯,因而確保了數(shù)據(jù)訪問(wèn)和修改的一致性。
具有安全性和所有權(quán)鏈接,以及可以附件到它們的證書。
提供了安全機(jī)制。
允許模塊化程序設(shè)計(jì)。
可以減少網(wǎng)絡(luò)通信流量。
分類:
用戶自定義過(guò)程
系統(tǒng)存儲(chǔ)過(guò)程
擴(kuò)展存儲(chǔ)過(guò)程
方法:
| 創(chuàng)建: | create |
| 調(diào)用 | exec |
| 修改 | Alter |
| 刪除 | Drop |
臨時(shí)存儲(chǔ)過(guò)程
| # | 局部臨時(shí)存儲(chǔ)過(guò)程 |
| ## | 全局臨時(shí)存儲(chǔ)過(guò)程 |
嵌套存儲(chǔ)過(guò)程,最多可以嵌套32層。想要查看存儲(chǔ)過(guò)程級(jí)數(shù),可以使用下面語(yǔ)句:
Print @@nestlevel?
2、觸發(fā)器
概念:觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,它是一個(gè)在修改指定表中的數(shù)據(jù)時(shí)執(zhí)行的存儲(chǔ)過(guò)程。經(jīng)常通過(guò)創(chuàng)建觸發(fā)器來(lái)強(qiáng)制實(shí)現(xiàn)不同表中的邏輯相關(guān)數(shù)據(jù)的引用完整性或一致性。由于用戶不能繞過(guò)觸發(fā)器,所以可以用它來(lái)強(qiáng)制實(shí)施復(fù)雜的業(yè)務(wù)規(guī)則,以此確保數(shù)據(jù)的完整性。
為什么使用觸發(fā)器?
觸發(fā)器自動(dòng)執(zhí)行,它們?cè)跇?biāo)的數(shù)據(jù)作了任何修改后立即激活。
觸發(fā)器可以通過(guò)對(duì)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行層疊更改,這比把代碼寫在前臺(tái)更安全。
觸發(fā)器可以強(qiáng)制限制,比check約束更復(fù)雜。與check不同的是,觸發(fā)器可以引用其他表中的列。
| 觸發(fā)器種類 | 針對(duì)的對(duì)象 | 說(shuō)明 |
| DDL觸發(fā)器 | DDL事件 | 數(shù)據(jù)庫(kù)架構(gòu)進(jìn)行更改 |
| DML觸發(fā)器 | DML事件 | update、delete、delete |
創(chuàng)建DDL觸發(fā)器:
Create trigger T_notdelete On datebase For drop_table,alter_table as print ‘事務(wù)不能被處理,基礎(chǔ)數(shù)據(jù)不能修改’ rollback創(chuàng)建DML觸發(fā)器:
--創(chuàng)建insert觸發(fā)器 Create trigger T_addnum On 學(xué)生信息 For insert As update 班級(jí)信息 set 班級(jí)人數(shù)=班級(jí)人數(shù)+1 Where 班級(jí)編號(hào)=1 --創(chuàng)建delete觸發(fā)器 Create trigger T_deleteteacher On 教師信息 For delete As Select 姓名 as 被刪除的教師姓名, 性別,年齡,聯(lián)系電話 from delete --創(chuàng)建update觸發(fā)器 Create trigger T_update On 教師信息 For update As If update (姓名) or update (性別) Begin Print ‘事務(wù)不能被處理,基礎(chǔ)數(shù)據(jù)不能修改’Rollback transaction End ElsePrint ‘?dāng)?shù)據(jù)修改成功’?
觸發(fā)器可以通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行;存儲(chǔ)過(guò)程可以通過(guò)存儲(chǔ)過(guò)程名直接被調(diào)用。
總結(jié)
以上是生活随笔為你收集整理的数据库视频总结四(存储过程和触发器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据库视频总结三(游标和事务)
- 下一篇: SQL—已更新或删除的行值要么不能使该行