当前位置: 首页 > 知识库问答 >
问题:

插入前的DB2触发器

韩麒
2023-03-14
CREATE TRIGGER WDW.user_name_search_del
before INSERT ON WDW.user_name_search_b
REFERENCING NEW AS new
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
Delete from wdw.user_name_search_b
where user_name = new.user_name ;--

在“name=new.user_name”后面发现意外的标记“end-of-statement”。预期的令牌可能包括:“”..sqlcode=-104,sqlstate=42601,driver=4.9.78 SQL code:-104,SQL state:42601

共有1个答案

唐元青
2023-03-14

需要解决两个问题:

  1. 将“begin atomic”更改为“begin”。“Begin Atomic”块不支持删除
  2. 在“;--”之前添加“;end”以结束“begin”块。

语句应为:

CREATE TRIGGER WDW.user_name_search_del 
  before INSERT ON WDW.user_name_search_b 
  REFERENCING NEW AS new 
  FOR EACH ROW 
  MODE DB2SQL 
BEGIN  
  Delete 
  from wdw.user_name_search_b 
  where user_name = new.user_name; 
END;
 类似资料:
  • 是否可以更改此触发器,以便表获得插入的2个列值(,)? 如何找到的值? 如果它是已知的并且可以插入表,那么它是否也可以插入表? 创建表排序顺序: 创建表图像: 错误消息: 错误1054:“new”SQL语句中的列“sortOrder”未知: 在INSERT ON image之前为每一行开始INSERT to nextcart.sortOrder设置sortOrderId=NULL,sortOrde

  • 也许有人能帮我澄清一下。 我正在尝试编写一个插入前触发器,如果它留空,可以设置关闭。这可能吗? 没有太多代码可显示。我所做的只是创建了一个带有调试语句的简单的插入前触发器,以确保我的触发器在验证规则之前执行。似乎验证规则是第一位的(我显然无法更改它)。触发器永远不会触发。 这是可行的还是不可能的?

  • null 计划:当用户购买一张票时,我将一条记录插入到适当的表中。例如,如果用户购买: Ticket#1,我将一条记录插入Table1 Ticket#2,我将一条记录插入Table1和Table2 Ticket#3,我将一条记录插入Table1和Table3 问题:如何接收不是类型为1的票证的所有数据,然后拆分参数插入到单独的表中。例如,当我试图为Table2创建触发器时,该触发器只能接收与Tab

  • 谁能帮我创建一个触发器,将Sensordata表中的最后一条记录附加到lastssensordata中。我只希望每个ConnectionDeviceId有1个值,并且该值必须是最后插入的值。(它将用于在仪表中显示)。我将在下链接我的sql脚本。

  • 我正在将一个INSERT写入一个DB2表,该表使用我插入的记录作为触发器,并被指控是锁定文件和阻止触发器工作的罪魁祸首。 目前,我可以编写记录,但它会挂起我的应用程序,并且我没有从DB2数据库得到任何响应。(尽管它确实写了!)。 我被告知我可能正在使用“更新模式”写作,但除了没有实际设置任何模式之外,我没有做任何具体的事情: 我只能猜测我的应用程序挂起的原因,其中一个猜测是没有在INSERT语句上

  • 我试图创建一个触发器,将新插入和/或更新的记录从一个表复制到该表的历史版本。其目的是在每次插入和/或更新表中的记录时保留一条记录。 这是我拥有的创建触发器语句语法,遵循IBMDb2触发器站点。 我收到的错误是: [代码:-104,SQL状态: 42601]在N.LIFECYCLE_STATUS)之后发现了一个意外的令牌END-OF-STATEMENT。预期的令牌可能包括:""... SQLCODE