濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 一篇文章帶你深入了解Mysql觸發(fā)器

一篇文章帶你深入了解Mysql觸發(fā)器

熱門標(biāo)簽:拉卡拉外呼系統(tǒng) 外東北地圖標(biāo)注 400電話可以辦理嗎 大眾點(diǎn)評(píng)星級(jí)酒店地圖標(biāo)注 話務(wù)外呼系統(tǒng)怎么樣 云南電商智能外呼系統(tǒng)價(jià)格 智能外呼系統(tǒng)復(fù)位 高清地圖標(biāo)注道路 臨清電話機(jī)器人

基于school數(shù)據(jù)庫(kù)中的student, course, sc表,創(chuàng)建滿足下述要求的觸發(fā)器:

數(shù)據(jù)庫(kù)navicat cmd界面運(yùn)行

1.對(duì)SC表進(jìn)行插入或修改時(shí),如果考試成績(jī)不在0-100范圍內(nèi)時(shí),則撤銷插入或修改操作。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_update_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_update_grade` BEFORE UPDATE ON `sc` FOR EACH ROW begin
if new.grade > 100 then
delete from sc;
elseif new.grade  0 then
delete from sc;
end if;
end
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `tri_insert_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_grade` BEFORE INSERT ON `sc` FOR EACH ROW begin
if new.grade > 100 then
delete from sc;
elseif new.grade  0 then
delete from sc;
end if;
end
;;

2.對(duì)SC表進(jìn)行插入時(shí),如果學(xué)生的選課總學(xué)分超過(guò)30,則報(bào)錯(cuò)并撤銷插入。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_insert_credit`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_credit` BEFORE INSERT ON `sc` FOR EACH ROW begin
SELECT sum(Ccredit) INTO @sumcred from Student join SC on SC.Sno=Student.Sno join Course on Course.Cno=SC.Cno WHERE sc.Sno=new.Sno;
if (@sumcred>30)
then
delete from sc;
end if;
end
;;

3.對(duì)SC表進(jìn)行修改時(shí),不允許修改考試成績(jī)不及格的學(xué)生選課記錄。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_grade` BEFORE UPDATE ON `sc` FOR EACH ROW begin
select grade INTO @gra from sc where sno=new.sno and sno=new.sno;
if (@gra >= 60)
then
set new.grade=20;
else
delete from sc;
end if;
end
;;

4.對(duì)STUDENT表進(jìn)行插入時(shí),如果年齡為空,則將該生年齡設(shè)置為所有學(xué)生年齡的平均值。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_student`;
DELIMITER ;;
CREATE TRIGGER `tri_student` BEFORE INSERT ON `student` FOR EACH ROW begin
select avg(Sage) INTO @avgage from student;
SET @old_age = new.Sage;
if @old_age IS NULL
then
set new.Sage=@avgage;
end if;
end
;;

5.在STUDENT表中增加兩列,分別用來(lái)存放學(xué)生的平均成績(jī)和等級(jí),并對(duì)SC表進(jìn)行插入后,自動(dòng)維護(hù)學(xué)生的平均成績(jī)和等級(jí)(85-100,等級(jí)為“優(yōu)"; 60-85,等級(jí)為“良”,60 以下,等級(jí)為“差")

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_comment`;
DELIMITER ;;
CREATE TRIGGER `tri_comment` BEFORE UPDATE ON `student` FOR EACH ROW begin
select avg(Grade) INTO @avggra from sc where sno=new.sno;
if @avggra > 85 then
update sc set new.Savg=@avggra,new.Scomment="you";
else if @avggra > 60 and @avggra = 85 then
update sc set new.Savg=@avggra,new.Scomment="you";
else
update sc set new.Savg=@avggra,new.Scomment='cha';
end if;
end if;
end
;;
DELIMITER ;

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

您可能感興趣的文章:
  • Mysql觸發(fā)器在PHP項(xiàng)目中用來(lái)做信息備份、恢復(fù)和清空
  • MySQL觸發(fā)器的使用
  • 詳解MySQL數(shù)據(jù)庫(kù)之觸發(fā)器
  • mysql 觸發(fā)器語(yǔ)法與應(yīng)用示例
  • MySql視圖觸發(fā)器存儲(chǔ)過(guò)程詳解
  • mysql觸發(fā)器實(shí)時(shí)檢測(cè)一條語(yǔ)句進(jìn)行備份刪除思路詳解

標(biāo)簽:阿里 山西 無(wú)錫 溫州 定西 三明 揚(yáng)州 福州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一篇文章帶你深入了解Mysql觸發(fā)器》,本文關(guān)鍵詞  一篇,文章,帶你,深入,了解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一篇文章帶你深入了解Mysql觸發(fā)器》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于一篇文章帶你深入了解Mysql觸發(fā)器的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    罗江县| 广元市| 个旧市| 确山县| 丹巴县| 图木舒克市| 义马市| 醴陵市| 萝北县| 滕州市| 昭苏县| 通江县| 来安县| 冀州市| 太和县| 阿图什市| 康定县| 营口市| 山东省| 隆化县| 凉山| 齐河县| 长沙市| 乐亭县| 左贡县| 宜兰市| 安吉县| 新安县| 二连浩特市| 贵港市| 双流县| 仙桃市| 乌拉特中旗| 布尔津县| 凤山县| 壤塘县| 右玉县| 江川县| 景东| 海兴县| 元氏县|