2(1)创建触发器sc_delete,当删除student表中的一条学生记录时,自动删除score表中对应学生的选课记录。 (2) 删除student表中的一条学生记录,验证触发器的作用。
时间: 2024-03-27 17:37:46 浏览: 20
1. 创建触发器:
```sql
CREATE TRIGGER sc_delete
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE student_id = OLD.student_id;
END;
```
2. 删除student表中的一条学生记录:
```sql
DELETE FROM student WHERE student_id = 1;
```
执行这个语句后,触发器会自动删除score表中对应学生的选课记录。可以通过以下语句验证:
```sql
SELECT * FROM score WHERE student_id = 1;
```
如果没有返回任何结果,说明触发器生效了,score表中对应学生的选课记录已被删除。
相关问题
创建触发器sc_delete,当删除student表中的一条学生记录时,自动删除score表中对应学生的选课记录
可以使用如下的 SQL 语句创建一个名为 `sc_delete` 的触发器,实现删除学生表中学生记录时自动删除 score 表中对应学生的选课记录:
```
CREATE TRIGGER sc_delete
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE student_id = OLD.student_id;
END;
```
这里使用了 `AFTER DELETE` 指示器,表示在删除操作执行后触发该触发器。`FOR EACH ROW` 表示在每一行删除操作完成后都会执行触发器中的代码。`OLD.student_id` 表示被删除的学生记录中的学号(即旧的学号),这个学号将被用来删除 score 表中对应学生的选课记录。具体来说,`DELETE FROM score WHERE student_id = OLD.student_id` 表示删除 score 表中学号为 `OLD.student_id` 的记录,即被删除的学生对应的选课记录。
2. 创建一个触发器trigger_t1,当删除表student中某个学生的信息时,同时将sc表中与该学生有关的数据全部删除。 (1) 第一步创建触发器trigger_t1 (2) 第二步向student表插入数据('95006','小赵','M',19,'IS'),向sc表插入数据('95006',2,91.0) (3) 第三步查看student表和sc表 (4) 第四步从student表中删除学号为95006的学生信息 (5) 第五步再次查看student表和sc表学号为95006的学生信息是否删除成功
以下是在 SQL Server 中创建触发器,插入数据,查看数据,删除数据并验证的步骤:
1. 创建触发器:
```
CREATE TRIGGER trigger_t1
ON student
AFTER DELETE
AS
BEGIN
DELETE FROM sc WHERE sid IN (SELECT deleted.sid FROM deleted);
END;
```
2. 向 student 表和 sc 表中插入数据:
```
INSERT INTO student (sid, sname, ssex, sage, sdept)
VALUES ('95006', '小赵', 'M', 19, 'IS');
INSERT INTO sc (sid, cid, score)
VALUES ('95006', 2, 91.0);
```
3. 查看 student 表和 sc 表:
```
SELECT * FROM student;
SELECT * FROM sc;
```
4. 删除学号为 95006 的学生信息:
```
DELETE FROM student WHERE sid = '95006';
```
5. 再次查看 student 表和 sc 表:
```
SELECT * FROM student;
SELECT * FROM sc;
```
可以看到,触发器成功删除了与学号为 95006 的学生相关的 sc 表中的记录。同时,student 表中的学生信息也被删除了。