繁体   English   中英

如何创建 Teradata 触发器(插入更新后)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM