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

How to enable the root account in Ubuntu 20.04

After Ubuntu 20.04 is installed, there is no root...

Detailed explanation of whereis example to find a specific program in Linux

Linux finds a specific program where is The where...

Integration practice of Vue+Element background management framework

Table of contents Vue+ElementUI background manage...

Example of how to build a Mysql cluster with docker

Docker basic instructions: Update Packages yum -y...

How to start jar package and run it in the background in Linux

The Linux command to run the jar package is as fo...

Solution to the problem of insufficient storage resource pool of Docker server

Table of contents 1. Problem Description 2. Probl...

How to encapsulate WangEditor rich text component in Angular

The rich text component is a very commonly used c...

Introduction to the use of anchors (named anchors) in HTML web pages

The following information is compiled from the Int...

Docker learning method steps to build ActiveMQ message service

Preface ActiveMQ is the most popular and powerful...

React new version life cycle hook function and usage detailed explanation

Compared with the old life cycle Three hooks are ...