插入条件后创建触发器

Posted

技术标签:

【中文标题】插入条件后创建触发器【英文标题】:Create a trigger after insert with a condition 【发布时间】:2020-05-05 17:39:09 【问题描述】:

如果某些条件得到验证,我想创建一个触发器以将 ID 行插入另一个表。

SWAB_TEST

id_swab
id_user 
result

NO_INFECTED

id_user

例如,我想在 NO_INFECTED 表中插入拭子测试为阴性的用户 ID

SWAB_TEST

id_swab : Test1
id_user : 1
result  : negative

NO_INFECTED

id_user: 1

我创建了这个触发器,但我不知道如何插入条件

CREATE OR REPLACE TRIGGER test_trigg 
AFTER INSERT ON swab_test
FOR EACH ROW
BEGIN
 INSERT INTO no_infected (id_user)
 VALUES(:new.id_user);
END;

【问题讨论】:

只是为了评论编码风格,您不必在大写字母中编码(尽管很遗憾,很多人都这样做)。此外,1 个字符的缩进在我看来是悲观的 :) 【参考方案1】:

只需要用:new.result = 'negative'控件添加一个IF条件:

CREATE OR REPLACE TRIGGER test_trigg 
AFTER INSERT ON swab_test
FOR EACH ROW
BEGIN
IF :new.result = 'negative' THEN
 INSERT INTO no_infected (id_user)
 VALUES (:new.id_user);
END IF;
END;
/

【讨论】:

谢谢,请问为什么是 [ :new.result = 'negative' ] 而不是 [ :old.result = 'negative'] ? 嗨@Gwynbleidd,对于插入触发器:old 不包含任何值。这不合逻辑吗:)? 是的......对不起我的无用问题,但我现在正在学习plsql,再次感谢! :) 不,不,没关系,我认为甚至有用,不客气@Gwynbleidd。

以上是关于插入条件后创建触发器的主要内容,如果未能解决你的问题,请参考以下文章

SQL 创建触发器以在特定条件下更新表

创建触发器后的 SQL Server

插入触发器后创建视图

如何使用触发器和 if 条件将值插入 SQL 表?

插入更新另一个表后创建触发器

插入后PostgreSQL触发函数更新