当前位置: 代码迷 >> DB2 >> 2个有关问题 急
  详细解决方案

2个有关问题 急

热度:3946   发布时间:2013-02-26 00:00:00.0
2个问题 急啊!
问题1:
条件:表LEND(DEBT)
目的:创建一个触发器,限制DEBT使其一次更新不要多余3元
运行后显示如下错误:
CREATE TRIGGER RAISE_LIMIT AFTER UPDATE OF DEBT ON LEND REFERENCING NEW ROW AS NROW OLD ROW AS OROW FOR EACH ROW WHEN( (NROW.DEBT-OROW.DEBT)>3) BEGIN ATOMIC SIGNAL SQLSTATE '7500'("DEBT INCREASE 3 YUAN") END
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N 在 "BT INCREASE 3 YUAN")" 后面找到异常标记
"END"。预期标记可能包括:"<delim_semicolon>"。 LINE NUMBER=1. SQLSTATE=42601

SQL0104N 在 "BT INCREASE 3 YUAN")" 后面找到异常标记 "END"。预 期标记可能包括:"<delim_semicolon>

加@运行脚本也试过了 去掉回车也试过了 都不好用,请大家帮帮忙~
问题2:
如何在一个已经建立的并且指定主键的表上 创建聚簇索引 是不是要把该表默认创建的聚簇索引删除 应该怎么做?
假如有表STUDENT(NUMBER,NAME)

------解决方案--------------------------------------------------------
end之前少了分号吧

------解决方案--------------------------------------------------------
应该是少了分号。
------解决方案--------------------------------------------------------
1、
将你的代码存为TXT
CREATE TRIGGER RAISE_LIMIT AFTER UPDATE OF DEBT ON LEND REFERENCING NEW ROW AS NROW OLD ROW AS OROW FOR EACH ROW BEGIN ATOMIC
if ( (NROW.DEBT-OROW.DEBT)>3) then
 SIGNAL SQLSTATE '7500'("DEBT INCREASE 3 YUAN") 
end if;
END@


db2 -td@ -f testTRI.sql

  相关解决方案