在 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 触发器中跳过当前行的任何关键字的主要内容,如果未能解决你的问题,请参考以下文章