在 DB2 触发器中跳过当前行的任何关键字

Posted

技术标签:

【中文标题】在 DB2 触发器中跳过当前行的任何关键字【英文标题】:Any keyword to skip the current row in DB2 trigger 【发布时间】:2014-03-24 11:34:23 【问题描述】:

如果不存在,我必须编写一个触发器来将数据插入数据库。 我一直写到插入记录。如果数据存在,我正在发出信号 我的整批记录都失败了。

   My questions: Is there any keyword which will skip/ignore/discard the current row? 
   My trigger is below. I want to remove signal and keep something else which will 
   discard/ignore/skip the current row insertion. For example : Continue keyword in JAVA  .

   CREATE OR REPLACE TRIGGER tri_books_edit 
   NO CASCADE BEFORE INSERT ON books 
   REFERENCING NEW AS N
   FOR EACH ROW 
   WHEN ((select count(*) from books where book_name = N.book_name and author = N.Author) > 0)
   SIGNAL SQLSTATE '75000' SET MESSAGE_TEXT = 'Duplicate row with same name and author' 

   Thanks for your help

【问题讨论】:

【参考方案1】:

您不需要为此使用触发器。只需在两个字段上添加唯一索引:

create unique index books_name_author on books(book_name, author);

防止重复的更简单的解决方案。

【讨论】:

太好了,非常感谢戈登!它对我有用。而且,是否有任何选项可以跟踪被拒绝的重复条目。请建议我... @user3454735 。 . .我其实不知道。许多数据库都包含INSERT 的日志记录或“返回”功能,但我不确定 DB2 是如何做到这一点的。

以上是关于在 DB2 触发器中跳过当前行的任何关键字的主要内容,如果未能解决你的问题,请参考以下文章

DB2:忽略更新触发器中的列

DB2 更新触发器

如何将 DB2 触发器转换为 SQL Server?

在 DB2 的触发器主体中引用 XML 列

db2中的SP是不是等待触发器执行

如何防止 DB2 中的递归触发器调用