An article to give you a deep understanding of Mysql triggers

An article to give you a deep understanding of Mysql triggers

Based on the student, course, and sc tables in the school database, create triggers that meet the following requirements:

數據庫navicat cmd界面運行

1. When inserting or modifying the SC table, if the test score is not in the range of 0-100, the insertion or modification operation is canceled.

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. When inserting into the SC table, if the total credits of the student's course selection exceed 30, an error will be reported and the insertion will be canceled.

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. When modifying the SC table, it is not allowed to modify the course selection records of students who have failed the examination.

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. When inserting into the STUDENT table, if the age is empty, the student's age is set to the average age of all students.

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. Add two columns to the STUDENT table to store the student's average score and grade, and automatically maintain the student's average score and grade after inserting into the SC table (85-100, grade is "excellent"; 60-85, grade is "good", below 60, grade is "poor")

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 ;

Summarize

This article ends here. I hope it can be helpful to you. I also hope that you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • MySQL events and triggers topic refinement
  • MySQL database triggers from beginner to proficient
  • Getting Started Guide for MySQL Stored Procedures, Triggers, and Event Schedulers
  • Detailed explanation of MySQL trigger trigger example
  • Introduction to the use and advantages and disadvantages of MySQL triggers
  • Detailed explanation of the idea of ​​MySQL trigger detecting a statement in real time for backup and deletion
  • Use of MySQL trigger
  • Use of MySQL triggers
  • MySQL trigger usage in simple terms

<<:  Solution to the bug that IE6 select cannot be covered by div

>>:  Use of SerialPort module in Node.js

Recommend

Complete steps to configure IP address in Ubuntu 18.04 LTS

Preface The method of configuring IP addresses in...

How to use Element in React project

This is my first time using the element framework...

How to view and configure password expiration on Linux

With the right settings, you can force Linux user...

Detailed steps to implement the Excel import function in Vue

1. Front-end-led implementation steps The first s...

A brief discussion on the perfect adaptation solution for Vue mobile terminal

Preface: Based on a recent medical mobile project...

Java+Tomcat environment deployment and installation process diagram

Next, I will install Java+Tomcat on Centos7. Ther...

Implementation of the login page of Vue actual combat record

Table of contents 1. Preliminary preparation 1.1 ...

Deep understanding of the mechanism of CSS background-blend-mode

This article is welcome to be shared and aggregat...

Detailed use cases of MySql escape

MySQL escape Escape means the original semantics ...

WeChat applet implements calculator function

WeChat Mini Programs are becoming more and more p...

js to realize web music player

This article shares simple HTML and music player ...