求教DB2 9.5通过控制器中心创建触发器,多简单的一个一句话,居然报错

hyblusea 2014-04-22 10:03:17
CONNECT TO DB2_TEST;
CREATE TRIGGER DB2ADMIN.TRGC_SEND1 AFTER INSERT ON DB2ADMIN.SEND1 REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SELECT * FROM SEND1;
END;
CONNECT RESET;

报错:
CREATE TRIGGER DB2ADMIN.TRGC_SEND1 AFTER INSERT ON DB2ADMIN.SEND1 REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SELECT * FROM SEND1;
END
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N 在 "* FROM SEND1; END" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:"JOIN <joined_table>"。 LINE NUMBER=4.
SQLSTATE=42601
...全文
259 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyblusea 2014-04-22
  • 打赏
  • 举报
回复
变量是用冒号么?
hyblusea 2014-04-22
  • 打赏
  • 举报
回复
引用 1 楼 wwwwb 的回复:
示例: 创建用的脚本testTRI.sql: create trigger testTRIGGER after update on test referencing old as OR new as NR for each row mode DB2SQL when (OR.id<>NR.id) BEGIN ATOMIC update test set CODE = '3' WHERE ID = NR.ID; END@ 创建用的命令:db2 -td@ -f /workspace/test/testTRI.sql
正是按照模板来写的, 请问这句话有问题吗: CREATE TRIGGER DB2ADMIN.TRGC_SEND1 AFTER INSERT ON DB2ADMIN.SEND1 REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL BEGIN ATOMIC INSERT INTO DB2ADMIN.xworlds_events (connector_id,object_key,event_status) VALUES ('CommAdapter',:N.object_id,0); END; 报错: SQL0104N 在 "LUES ('CommAdapter'," 后面找到异常标记 ":"。预期标记可能包括:"<space>"。 LINE NUMBER=2. SQLSTATE=42601
wwwwb 2014-04-22
  • 打赏
  • 举报
回复
示例: 创建用的脚本testTRI.sql: create trigger testTRIGGER after update on test referencing old as OR new as NR for each row mode DB2SQL when (OR.id<>NR.id) BEGIN ATOMIC update test set CODE = '3' WHERE ID = NR.ID; END@ 创建用的命令:db2 -td@ -f /workspace/test/testTRI.sql

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧