• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

12、在 course 表上创建触发器 del_trig,当 course 表上删除一 门课程时,级联删除sc 表该课程的记录。 删除course表的一条记录,查看 sc 表相应记录是否被自动删除。

发布于 2024-05-07 19:34:35

在数据库中创建触发器以实现级联删除的功能,通常需要使用到数据库的触发器语法。以下是一个基本的示例,展示了如何在 SQL 中创建一个名为 del_trig 的触发器,该触发器会在 course 表上的删除操作时自动删除 sc 表中相应的记录。

CREATE TRIGGER del_trig
AFTER DELETE ON course
FOR EACH ROW
BEGIN
  DELETE FROM sc WHERE sc.course_id = OLD.course_id;
END;

这个触发器定义了以下内容:

  • CREATE TRIGGER del_trig:创建一个名为 del_trig 的触发器。
  • AFTER DELETE ON course:指定触发器在 course 表上的删除操作之后触发。
  • FOR EACH ROW:表示对于每个被删除的行,触发器都会执行一次。
  • BEGIN ... END;:触发器的开始和结束部分。
  • DELETE FROM sc WHERE sc.course_id = OLD.course_id;:删除 sc 表中所有 course_id 与被删除的 course 表记录中的 course_id 相匹配的记录。

请注意,OLD 是一个特殊的伪记录,它包含了被删除行的信息。

在创建触发器之后,当你执行删除 course 表中某条记录的操作时,触发器会被激活,并且会自动删除 sc 表中相关的记录。

要测试触发器是否正常工作,你可以执行以下步骤:

  1. 删除 course 表中的一条记录。
  2. 查询 sc 表,检查相应的记录是否已经被删除。

例如:

DELETE FROM course WHERE course_id = '特定课程ID';

然后查询 sc 表:

SELECT * FROM sc WHERE course_id = '特定课程ID';

如果触发器正常工作,你应该找不到任何与被删除课程相关的记录。

请根据你使用的数据库系统(如 MySQL、PostgreSQL、SQL Server 等)的具体语法调整上述 SQL 语句。不同的数据库系统可能在触发器的创建和使用上有所不同。

0 条评论

发布
问题

在线
客服