在course表上建立一个触发器T_courseIstd,对course表插入记录时,先检查原course表中是否存在这个学分,如果存在则执行插入操作,否则提示“学分不存在!”。设计用例进行测试。删除触发器T_courseIstd。
时间: 2024-02-13 21:02:35 浏览: 77
好的,您的问题是在course表上建立一个触发器T_courseIstd,对course表插入记录时,先检查原course表中是否存在这个学分,如果存在则执行插入操作,否则提示“学分不存在!”。设计用例进行测试。删除触发器T_courseIstd。
首先,我们来创建T_courseIstd触发器,该触发器将在向course表插入数据时被触发,并检查原course表中是否存在这个学分。如果存在,则执行插入操作,否则提示“学分不存在!”:
```
CREATE TRIGGER T_courseIstd
BEFORE INSERT ON course
FOR EACH ROW
BEGIN
IF NOT EXISTS(SELECT 1 FROM course WHERE credit = NEW.credit) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '学分不存在!';
END IF;
END;
```
接下来,我们可以设计以下测试用例来测试该触发器:
1. 插入一个原course表中存在的学分,观察是否成功插入。
```
INSERT INTO course(name, credit) VALUES('Java', 2);
```
2. 插入一个原course表中不存在的学分,观察是否提示“学分不存在!”。
```
INSERT INTO course(name, credit) VALUES('Python', 3);
```
3. 插入多条数据,其中包含原course表中不存在的学分,观察是否提示“学分不存在!”并阻止插入操作。
```
INSERT INTO course(name, credit) VALUES('C++', 4), ('JavaScript', 3), ('PHP', 5);
```
最后,我们可以删除T_courseIstd触发器:
```
DROP TRIGGER IF EXISTS T_courseIstd;
```
希望这个回答能够帮助您!
阅读全文