3. 创建一个触发器trig_book_de,当删除图书表的记录时,将被删除的图书的价格赋值给用户变量bookprice。 4. 删除图书表中的西游记这本书,查看第3题触发器的执行效果。
时间: 2024-02-03 21:11:32 浏览: 43
以下是创建触发器的SQL语句:
```
CREATE TRIGGER trig_book_de
AFTER DELETE ON 图书表
FOR EACH ROW
BEGIN
SET @bookprice = OLD.价格;
END;
```
执行以上SQL语句后,当图书表中的记录被删除时,将会自动将被删除的图书的价格赋值给用户变量@bookprice。
接下来可以执行以下SQL语句删除图书表中的西游记这本书:
```
DELETE FROM 图书表 WHERE 书名 = '西游记';
```
执行完毕后,可以通过以下SQL语句查看用户变量@bookprice的值:
```
SELECT @bookprice;
```
这样就可以验证触发器的执行效果了。
相关问题
编写一个触发器trig_stu_score_delete,在学生表删除一条记录时则同时删除成绩表中相应的信息。
您好,以下是MySQL数据库中创建一个名为trig_stu_score_delete的触发器,实现在学生表删除一条记录时同时删除成绩表中相应的信息。
```sql
CREATE TRIGGER trig_stu_score_delete
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE student_id = OLD.student_id;
END;
```
解释:
- CREATE TRIGGER:创建一个触发器。
- trig_stu_score_delete:触发器的名称。
- AFTER DELETE ON student:当学生表中删除一条记录时触发。
- FOR EACH ROW:对于每一行删除。
- BEGIN...END:触发器的执行部分。
- DELETE FROM score:从成绩表中删除数据。
- WHERE student_id = OLD.student_id:删除与被删除学生ID相同的成绩记录。
注意:
- 在创建触发器时,需要确保MySQL用户具有足够的权限来创建触发器。
- 在删除学生记录时,将会连带删除与该学生相关的成绩记录,请谨慎操作。
用sql,为表 student 创建一个触发器 trig_del,要求不允许从表 student 中删除入学成绩必须大于400的记录
你好,根据你的要求,可以使用以下 SQL 语句创建一个名为 trig_del 的触发器,实现不允许从表 student 中删除入学成绩必须大于400的记录:
```
CREATE TRIGGER trig_del
BEFORE DELETE ON student
FOR EACH ROW
BEGIN
IF OLD.score <= 400 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '不允许删除入学成绩必须大于400的记录';
END IF;
END;
```
触发器 trig_del 在每次从表 student 中删除记录之前触发,检查该记录的入学成绩是否大于400,如果小于等于400,则抛出一个自定义的异常,阻止删除操作的执行。