国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

觸發(fā)器在數(shù)據(jù)庫課程教學(xué)中的應(yīng)用研究

2021-11-24 18:46景偉娜陳紅軍段林羽
科技信息·學(xué)術(shù)版 2021年27期
關(guān)鍵詞:觸發(fā)器完整性

景偉娜 陳紅軍 段林羽

摘要:數(shù)據(jù)庫應(yīng)用系統(tǒng)對數(shù)據(jù)庫內(nèi)的數(shù)據(jù)要求比較高,要求所設(shè)計的數(shù)據(jù)庫能保證一定程度的數(shù)據(jù)完整性,從而保證有關(guān)聯(lián)數(shù)據(jù)的一致性。本文中以MySQL中的DML觸發(fā)器應(yīng)用在人事管理數(shù)據(jù)庫為例,介紹了如何利用觸發(fā)器實現(xiàn)表與表之間的數(shù)據(jù)一致性。

關(guān)鍵詞:觸發(fā)器;完整性;數(shù)據(jù)一致

一、引言

數(shù)據(jù)庫的完整性是指保護(hù)數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,防止錯誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫造成無效操作,本部分內(nèi)容在數(shù)據(jù)庫課程教學(xué)中屬于難點。本文主要介紹作為數(shù)據(jù)完整性實施的方法之一的觸發(fā)器在數(shù)據(jù)庫應(yīng)用中(本文以人事管理應(yīng)用系統(tǒng)為例)的使用以增強本知識塊的掌握。

二、觸發(fā)器介紹

MySQL中的DML觸發(fā)器通過用戶對數(shù)據(jù)庫中表的操作觸發(fā),由于觸發(fā)器是由操作觸發(fā)的過程,因此可以利用觸發(fā)器進(jìn)行維護(hù)表間數(shù)據(jù)的一致性。

創(chuàng)建觸發(fā)器的語法格式如下:

create trigger 觸發(fā)器名

before | after

insert | delete | update

on 表名

for each row

<觸發(fā)體>

觸發(fā)器名即創(chuàng)建的觸發(fā)器的名字;before | after即觸發(fā)時間,在操作前還是操作后觸發(fā);insert | delete | update即對表進(jìn)行的添加、刪除、更新的觸發(fā)操作;表名即在哪個表上進(jìn)行的操作;for each row表示任何記錄執(zhí)行對應(yīng)操作都會觸發(fā)觸發(fā)器;觸發(fā)體里包含了觸發(fā)時要執(zhí)行的SQL語句。

觸發(fā)器將沒有操作之前的狀態(tài)保存到old關(guān)鍵詞:中,將操作后的狀態(tài)保存到new關(guān)鍵詞:中,語法為old/new.字段名。需要注意的是,insert型觸發(fā)器只有new,new 表示將要(插入前)或者已經(jīng)(插入后)增加的數(shù)據(jù);update型觸發(fā)器既有old也有new,old表示更新之前的數(shù)據(jù),new表示更新之后的數(shù)據(jù);delete型觸發(fā)器只有old,old 表示將要(刪除前)或者已經(jīng)(刪除后)被刪除的數(shù)據(jù)。

三、觸發(fā)器在人事管理中的應(yīng)用

1、人事管理數(shù)據(jù)庫介紹

因篇幅所限,本文僅以2個數(shù)據(jù)表中部分字段介紹使用觸發(fā)器實現(xiàn)表間數(shù)據(jù)的一致性。

員工表,包含員工的編號、姓名、部門編號等。部門表,包含部門的編號,名稱等。兩個表的創(chuàng)建語句如下:

create table e (?????????? #員工表

e_no int(6)primary key, #編號

e_name varchar(12),?? #姓名

d_no int(4))?????????? #所在部門編號

create table d(?????????? #部門表

d_no int(4)primary key,#編號

d_name varchar(20))?? #名稱

2、觸發(fā)器在數(shù)據(jù)庫中的應(yīng)用

(1)觸發(fā)器在數(shù)據(jù)添加時示例

delimiter @@

create trigger t_e_i

before insert

on e

for each row

begin

declare m varchar(20);

if new.d_no not in(select d_no from dept)then

select x into m;

end if;

end@@

delimiter ;

MySQL不能在insert觸發(fā)器中對本表直接進(jìn)行insert、update、delete操作,也不能通過回滾事務(wù)取消操作,但如果觸發(fā)器的SQL語句執(zhí)行過程中出現(xiàn)錯誤,會自動撤銷操作,曲線實現(xiàn)事務(wù)回滾。當(dāng)往員工表中添加已存在部門編號的員工信息時,添加成功;添加不存在部門編號的員工信息時,添加失敗。

(2)觸發(fā)器在數(shù)據(jù)更新時示例

create trigger t_d_u

after update

on d

for each row

update e set d_no=new.d_no;

where d_no=old.d_no;

當(dāng)把部門表中部門編號為0801修改為0802時,員工表中部門編號為0801的員工記錄中的部門編號也被修改為0802。

(3)觸發(fā)器在數(shù)據(jù)刪除時示例

create trigger t_d_d

after delete

on d

for each row

delete from e

where d_no=old.d_no;

當(dāng)把部門表中部門編號為0802的部門記錄刪除時,員工表中部門編號為0802的員工記錄也被刪除。

四、總結(jié)

在數(shù)據(jù)庫設(shè)計時為了保持?jǐn)?shù)據(jù)表中數(shù)據(jù)的一致性,可以采用觸發(fā)器作為實現(xiàn)方法之一。通過合理設(shè)計和使用觸發(fā)器,保證數(shù)據(jù)的完整性,以提高數(shù)據(jù)庫的安全性和完整性,但觸發(fā)器操作自動觸發(fā)的特點,也會給后期運行維護(hù)帶來風(fēng)險。

參考文獻(xiàn):

[1]陳志泊.數(shù)據(jù)庫原理及應(yīng)用教程(第4版)[M].北京:人民郵電出版社,2019:276-279.

[2]李月軍 付良延.數(shù)據(jù)庫原理及應(yīng)用(MySQL版)[M].北京:清華大學(xué)出版社,2021:111-113.

[3]陳虹.觸發(fā)器在學(xué)生成績管理數(shù)據(jù)庫中的應(yīng)用研究[J].數(shù)碼設(shè)計,2021(20):85-88.

[4]沈黎.基于網(wǎng)絡(luò)數(shù)據(jù)庫的存儲過程和觸發(fā)器應(yīng)用研究[J].西南師范大學(xué)學(xué)報,2016(41):51-55.

[5]李虎軍.SQL Server觸發(fā)器應(yīng)用探析[J].電腦知識與技術(shù),2016(16):13-15.

作者簡介:

景偉娜(1977-),女,河南襄縣人,碩士,副教授,研究方向:云計算技術(shù)及數(shù)據(jù)分析。

陳紅軍(1971-),男,河南葉縣人,碩士,副教授,研究方向:數(shù)據(jù)庫應(yīng)用。

段林羽(2001-),男,山西呂梁人,本科,計算機科學(xué)與技術(shù)。

猜你喜歡
觸發(fā)器完整性
酶可提高家禽的胃腸道完整性和生產(chǎn)性能
防止調(diào)度自動化系統(tǒng)漏監(jiān)視告警的一些措施
配置觸發(fā)器有條件啟動Windows服務(wù)
基于Multisim14.0的雙D觸發(fā)器應(yīng)用與仿真
高中通用技術(shù)元器件教學(xué)優(yōu)化策略探析
家庭影院智能化第一步
觸發(fā)器在酒店管理系統(tǒng)中的應(yīng)用
編寫導(dǎo)學(xué)案的點滴思考
優(yōu)化教學(xué)內(nèi)容對程序設(shè)計課程的影響
基于電路原理的觸發(fā)器波形分析
开远市| 霍城县| 民和| 龙游县| 偃师市| 阿拉善盟| 娱乐| 鹤壁市| 伽师县| 仙游县| 贵州省| 通渭县| 大宁县| 苍梧县| 科技| 定州市| 宜春市| 讷河市| 洮南市| 通山县| 广州市| 无为县| 衢州市| 临海市| 井陉县| 丹棱县| 海盐县| 博湖县| 蒙城县| 前郭尔| 平乐县| 云和县| 华池县| 通化市| 佛冈县| 洛阳市| 江口县| 巩留县| 华坪县| 永平县| 潼南县|