读书人

DB2删除触发器高手帮帮忙解决方法

发布时间: 2012-03-09 21:42:55 作者: rapoo

DB2删除触发器,高手帮帮忙,急
我有两个表 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



[解决办法]
建立表的时候,直接设置关联条件,就可以自动删除了,不需要用触发器。

读书人网 >IBM DB2

热点推荐