①创建插入触发器并进行触发器的触发执行。为表sc创建一个插入触发器student_sc_insert,当向表sc中插入数据时,必须保证插入的学号有效地存于student表中。如果插入的学号在studen表中不存在,则给出错误提示。 向表sc中插入一行数据:sno、cno、degree 分别是2020030215'、'cO1'、78。该行数据插入后观察插入触发器student_sc_insert是否触发工作,再插入一行数据,观察插入触发器是否触发工作。
时间: 2024-01-01 08:11:04 浏览: 117
触发器编写例子
好的,我明白了。针对你的问题,我可以给出如下SQL语句来创建触发器和插入数据:
创建触发器:
```
CREATE TRIGGER student_sc_insert
BEFORE INSERT ON sc
FOR EACH ROW
BEGIN
DECLARE count INT;
SELECT COUNT(*) INTO count FROM student WHERE sno = NEW.sno;
IF count = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid student number';
END IF;
END;
```
以上SQL语句创建了一个名为student_sc_insert的插入触发器,它会在每次往sc表中插入一行数据之前执行。在触发器中,首先声明一个count变量用来存储查询结果的计数值,然后查询student表中是否存在这个学号,如果不存在,就会抛出一个SQLSTATE '45000'的异常,提示错误信息为'Invalid student number'。
插入数据:
```
INSERT INTO sc (sno, cno, degree) VALUES ('2020030215', 'cO1', 78);
```
以上SQL语句向sc表中插入一行数据,其中sno为'2020030215',cno为'cO1',degree为78。插入数据后,观察触发器是否正常触发。
阅读全文