创建一个名为tir_Update_S的触发器,实现:当学生基本表S中的学号Sno发生变化时,SC选课记录中对应的学号也发生改变。并通过测试数据验证该触发器的执行情况
时间: 2024-05-16 19:16:39 浏览: 169
TIR_gui.zip:可视化折射和全内反射-matlab开发
以下是创建tir_Update_S触发器的SQL语句:
```
CREATE TRIGGER tir_Update_S
AFTER UPDATE ON S
FOR EACH ROW
BEGIN
UPDATE SC SET Sno = NEW.Sno WHERE Sno = OLD.Sno;
END;
```
这个触发器会在S表中的学号Sno发生更新时触发,然后将SC表中对应的学号也更新为新值。其中,NEW和OLD是MySQL系统变量,分别表示新值和旧值。
为了测试该触发器,可以先插入一些数据:
```
INSERT INTO S (Sno, Sname) VALUES ('001', 'Alice');
INSERT INTO S (Sno, Sname) VALUES ('002', 'Bob');
INSERT INTO SC (Sno, Cno) VALUES ('001', '001');
INSERT INTO SC (Sno, Cno) VALUES ('002', '002');
```
然后,可以尝试更新S表中的学号:
```
UPDATE S SET Sno = '003' WHERE Sno = '001';
```
执行完这个更新语句后,SC表中的记录也会相应地更新,Sno变为'003'。可以通过以下语句验证:
```
SELECT * FROM SC;
```
结果应该是:
```
+-----+-----+
| Sno | Cno |
+-----+-----+
| 003 | 001 |
| 002 | 002 |
+-----+-----+
```
阅读全文