Triggers 如何在db2中插入之前创建触发器

Triggers 如何在db2中插入之前创建触发器,triggers,insert,db2,multi-table,Triggers,Insert,Db2,Multi Table,我有以下三个表格: 我需要创建一个触发器,禁止学生在未完成其先决条件的情况下上课。必须使用触发器。当试图插入没有正确的Pre-req的类时,触发器必须返回错误消息Missing Pre-req 到目前为止,我编写了以下命令: create trigger checkPrereq before insert on HW3.SCHEDULE referencing new as newRow for each row When ( select GRADE from HW3.SCHE

我有以下三个表格:

我需要创建一个触发器,禁止学生在未完成其先决条件的情况下上课。必须使用触发器。当试图插入没有正确的Pre-req的类时,触发器必须返回错误消息Missing Pre-req

到目前为止,我编写了以下命令:

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发现以下意外令牌级别 选择此选项时,将显示每行。预期的令牌可能包括:。线 数字=1。SQLSTATE=42601


我不明白这里发生了什么。你能帮我修一下吗?感谢您的帮助

您必须使用不同于默认值的选项;如果要运行复合SQL语句,请使用语句终止符字符。例如,将@与语句一起放在文件mysqlfile.sql的语句末尾,并使用以下命令运行语句:db2-td@-f mysqlfile.sql。如果您使用其他工具运行语句,请在相应的位置查找以更改语句终止符字符。您的语法不正确-当搜索条件后面不能跟IN或任何表达式时。搜索条件指定为真、假或未知的条件。