Beherrschen Sie die SQL-Programmiersprache eines Mainstream-DBMS und definieren Sie VOR (für) basierend auf der zuvor erstellten Datenbank Trigger und AFTER-Trigger beherrschen die Definition gespeicherter Datenbankprozeduren, das Ausführen gespeicherter Prozeduren, das Umbenennen gespeicherter Prozeduren, das Löschen gespeicherter Prozeduren und das Übergeben von Parametern gespeicherter Prozeduren.
3. Implementierungsinhalte und -schritte
1. Erstellen Sie eine einfache gespeicherte Prozedur ohne Parameter
delimiter// CREATE PROCEDURE sp_avggrade() COMMENT '查询每门课程学生的平均成绩的功能' BEGIN SELECT cno as 课程号,avg(grade)as 平均成绩 FROM sc GROUP BY cno; end// delimiter;
(1) Erstellen Sie eine gespeicherte Prozedur sp_course_avggrade, um die Abfrage durch Eingabe der Kursnummer zu implementieren Parameter Funktion zur Angabe der durchschnittlichen Kursnote der Kursnummer;
call sp_avggrade();
(2) Rufen Sie diese gespeicherte Prozedur auf, um die Durchschnittsnote des angegebenen Kurses zu erhalten.3. Erstellen Sie eine gespeicherte Prozedur mit Eingabe- und Ausgabeparametern. (1) Erstellen Sie eine gespeicherte Prozedur sp_sdept _student, um den vom Benutzer eingegebenen Abteilungsnummernparameter zu implementieren , Die Funktion, um die Anzahl der Studenten in der Hochschule zu ermitteln und in Form einer Variablen auszugeben;
delimiter// CREATE PROCEDURE sp_course_avggrade(IN c_no CHAR(2)) COMMENT '通过输入课程编号参数查询指定课程编号的课程平均成绩的功能' BEGIN SELECT cno,AVG(grade) FROM sc WHERE cno=c_no; END// delimiter;
delimiter// CREATE PROCEDURE sp_sdept_student2(IN _sdept CHAR(10),OUT num int) BEGIN SELECT COUNT(sno) INTO num FROM student WHERE _sdept = sdept; END// delimiter;
(1) Erstellen Sie einen Trigger in der Studententabelle, um zu erkennen, dass der Student in der Punktetabelle Kaskadenlöschung von Notendatensätzen;
SET @num=10; CALL sp_sdept_student2('计科',@num); SELECT @num AS '人数';
delimiter// CREATE TRIGGER delete_stu BEFORE DELETE ON student FOR EACH ROW BEGIN DELETE FROM sc WHERE sc.sno=old.sno; END// delimiter;
Verifizierung(2)
delimiter// CREATE TRIGGER scgrade BEFORE INSERT ON sc FOR EACH ROW BEGIN IF new.grade>100 or new.grade < 0 THEN SIGNAL SQLSTATE '45000' SET message_text='录入成绩不符合规定,拒绝插入'; END IF; END// delimiter;
Das obige ist der detaillierte Inhalt vonAnalyse von Triggern und gespeicherten Prozedurinstanzen der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!