Sql 运行触发器时出错

Sql 运行触发器时出错,sql,triggers,db2,Sql,Triggers,Db2,创建以下触发器以将资产标记移动到其正确的字段 但还是有一个错误。不是数据库管理员 CREATE TRIGGER HARRISOP.ASSET_TAG INSTEAD OF INSERT ON DB2ADMIN.SNMPSYS FOR EACH STATEMENT MODE DB2SQL SELECT * FROM DB2

创建以下触发器以将资产标记移动到其正确的字段

但还是有一个错误。不是数据库管理员

CREATE TRIGGER HARRISOP.ASSET_TAG INSTEAD OF  INSERT  ON DB2ADMIN.SNMPSYS FOR EACH                                                                                STATEMENT MODE DB2SQL 
   SELECT * 
   FROM DB2ADMIN.SNMPSYS AS SNMPSYS
   WHERE SNMPSYS.SYSCONTACT_X = ' A330637'
   INSERT INTO DB2ADMIN.CITEMPLATE (ASSETTAG_X)
   VALUES (DEFAULT)
根据用户帮助创建新代码。还是不行

CONNECT TO CMDB;
CREATE TRIGGER DB2ADMIN.ASSET_TAG NO CASCADE BEFORE  INSERT  ON DB2ADMIN.SNMPSYS  FOR EACH ROW  MODE DB2SQL 
REFERENCING 
    NEW AS N
FOR EACH ROW 
MODE DB2SQL
SET N.ASSETTAG_X = SUBSTR(
  N.SYSCONTACT_X, 
  1, 
  LOCATE(',', N.SYSCONTACT_X) - 1
);
CONNECT RESET;

如果我正确理解你想要什么,触发器应该是这样的

CREATE TRIGGER HARRISOP.ASSET_TAG 
BEFORE INSERT   
ON DB2ADMIN.SNMPSYS 
REFERENCING NEW AS N
FOR EACH ROW 
SET N.ASSETTAG_X = SUBSTR(
  N.SYSCONTACT_X, 
  1, 
  LOCATE(',', N.SYSCONTACT_X) - 1
)

您应该在手册中阅读更多关于触发器的内容:

我真的只想在一个字段中获取所有内容。Tivoli正在获取SNMP信息并将其放在位置字段中。例如,安大略省渥太华A12345567。我们有很多看起来不同的资源,所以我需要把所有的角色移到另一个字段。同样,没有一个DB的家伙,所以任何帮助都将不胜感激。使用DB2数据库。触发器本身和insert语句的语法都不正确。我在SQL中也没有看到任何逗号或位置字段。请用人的术语解释您想要实现的目标。我有一个名为syscontact_x的snmp字段。我需要将一些数据移出并放入正确的字段调用assettag_x。资产标记和当前位置文本与此示例类似。A12345567,渥太华安大略省。我需要将A1234567移动到正确的字段。我想创建一个触发器,当该字段上发生插入或更新并移动数据时触发该触发器。我正在使用DB2并使用其内置的SQL assist来创建触发器,这就是它所提出的。我找不到比这更手工的方法了。希望这能回答你的问题。谢谢看起来我已经完成了一部分。。只需要有关所选数据的实际移动的帮助。连接到CMDB;在DB2ADMIN.SNMPSYS上为每行模式DB2SQL插入DB2ADMIN.SNMPSYS之前创建触发器DB2ADMIN.ASSET_标记NO CASCADE从DB2ADMIN.SNMPSYS中选择SNMPSYS.SYSCONTACT_X作为SNMPSYS,其中SNMPSYS.SYSCONTACT_X类似“,”感谢您的回答。.获取此信息。[IBM][CLI Driver][DB2/NT]SQL0104N在DB2ADMIN.SNMPSYS上发现引用NEW的每个行模式DB2SQL的意外标记。预期的令牌可能包括:。行号=2。SQLSTATE=42601。我已经读了很多关于触发器的书,我不知道什么是什么了。这应该很简单,可以将所有内容移动到,to assettag_x字段之前。我在提供的代码中没有看到任何模式DB2SQL。注意关键词的顺序-虽然你可以先穿袜子再穿裤子,但计算机不是这样的。是的,对不起,忽略这一点…我在使用SQL helper,它把它放进去了。有什么想法吗?你能完全按照我提供的复制和粘贴代码吗,还是坚持要在代码中引入你自己的语法错误?比较您运行的内容和我显示的内容。我尝试过处理和粘贴,但仍然出现与上面相同的错误。连接到CMDB是由DB2自动放入的,harrisop是不正确的,我认为应该如上面db2admin所示。。。我通过右键单击字段并选择CreateTrigger来创建触发器,它会自己将其放入。希望我没有把你完全弄糊涂。非常沮丧的是,这不起作用,必须在周一之前完成。非常感谢。