我有两个表 t_el_answer 和t_el_answerItem 两个表是关联的,answer是父表,他的主键answerid 是t_el_answerItem 的外键。我现在要做删除操作,在删除t_el_answer记录的时候,先删除子表t_el_answerItem 里相关记录。
我的触发器代码是:
CONNECT TO CBRCBO^
CREATE TRIGGER DBADM.DELANSWER NO CASCADE BEFORE DELETE ON DBADM.T_EL_ANSWER REFERENCING OLD AS OLDROW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
delete from T_EL_ANSWERITME AS a where a.answerid in (select answerid from T_EL_ANSWER AS b where b.answerid=oldrow.answerid);
END^
CONNECT RESET^
(这个是点显示SQL窗口里显示的内容)
提示错误为
[IBM][CLI Driver][DB2/NT] SQL0104N 在 "werid=old.answerid) "
之后发现意外的标记 "END "。期望的标记可能包括: " <delim_semicolon> "。 LINE NUMBER=3.
SQLSTATE=42601
解释:
在文本 " <文本> " 后面的指定标记处检测到 SQL
语句中的语法错误。 " <文本> " 字段指示无效标记前面的 SQL 语句中的 20
个字符。
作为对程序员的帮助,在 SQLCA 的 SQLERRM
字段中,提供了有效标记的部分列表作为
" <标记列表> "。此列表假设语句到该位置为止是正确的。
不能处理该语句。
用户响应:
在指定的标记区域内检查并更正语句。
sqlcode : -104
sqlstate : 42601
------解决方案--------------------------------------------------------
建立表的时候,直接设置关联条件,就可以自动删除了,不需要用触发器。