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