triggers - 如何在插入 db2 之前创建触发器
问题描述
我在下面有三个表:
我需要创建一个触发器以禁止学生在未完成先决条件的情况下上课(必须使用触发器)。当尝试插入一个没有正确前置请求的类时,触发器必须返回错误消息“缺少前置请求”。
到目前为止,我在下面写了一个命令:
create trigger checkPrereq
before insert on HW3.SCHEDULE
referencing new as newRow
for each row
When
(
select GRADE
from HW3.SCHEDULE
where HW3.SCHEDULE.ClassId =
(
select PrereqId from HW3.CLASS_PREREQ
where newRow.ClassId = HW3.CLASS_PREREQ.ClassId
)
) in ('F', null)
begin atomic
set newRow.Semester = null;
signal sqlstate 'KILLED' set message_text = ('Missing Pre-req');
end
但我收到警告:
DB21034E 该命令被作为 SQL 语句处理,因为它不是有效的命令行处理器命令。在 SQL 处理期间,它返回:SQL0104N 在“每行时(选择”)之后发现了意外的标记“GRADE”。预期的标记可能包括:“)”。行号=1。SQLSTATE=42601
我无法理解这里发生了什么。你能帮忙解决这个问题吗?任何帮助表示赞赏!
解决方案
推荐阅读
- mongodb - MongoDB + Express 如何优化代码?
- java - RatingBar 中的星数看起来错误
- node.js - 如何将 webpack env 传递给 nodejs 应用程序?
- mongodb - mongodb update document method
- javascript - 如何从 ReactVis 系列图中选择 VerticalBarSeries?
- html - 如何在 xslt 2.0 中执行不区分大小写的属性名称
- docker - Docker 私有注册表镜像上传
- java - 选择项目后组合框中的图像消失
- data-structures - 如何使用联合查找数据结构对字符串进行分组?
- r - 不使用 %>% 的不同值