![](/img/trans.png)
[英]How to create a trigger which, update a row in the same table after insert?
[英]How to create Teradata trigger (after insert update)?
我试图消除 null 值而不使列“非空”以避免错误。 因此,我想创建一个触发器来更新每个插入的行,如果它包含 null 以将其替换为“N”。 以下语法导致
“作为单个语句执行。失败 [5423: HY000] 此触发器包含无效的 REFERENCING 子句。经过的时间 = 00:00:00.018 STATEMENT 1: REPLACE 失败。”
语法:
Replace TRIGGER DB.C_UP_CLIENTS
AFTER INSERT ON DB.CLIENTS
REFERENCING OLD table as old_clients_table
NEW table as new_clients_table
FOR EACH Statement
(update DB.CLIENTS set NEEDS_AUTHENTICATION = 'N' where NEEDS_AUTHENTICATION is null;);
正如 Fred 所说,我们没有用于 AFTER TRIGGER 的 OLD 表。 我会这样做(在 BEFORE INSERT 触发器中):
REPLACE TRIGGER DB.C_UP_CLIENTS ENABLED
BEFORE INSERT ON DB.CLIENTS
REFERENCING NEW AS NEW_VALUE
FOR EACH ROW
BEGIN ATOMIC(
SET NEW_VALUE.NEEDS_AUTHENTICATION =coalesce(NEW_VALUE.NEEDS_AUTHENTICATION ,'N');
)
END;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.