【发布时间】:2018-12-30 00:22:47
【问题描述】:
我有一个包含两个数据列的表:col1 和 col2。 Col1 是文本字段,col2 是时间。 Col1 是必需的,col2 不是,所以它应该有一个默认值 null。我使用 pgAdmin,这对我来说是全新的,就像 sql trigger 一样。我有如下触发函数代码:
CREATE OR REPLACE FUNCTION schema.table_replace()
RETURNS trigger AS
LANGUAGE 'plpgsql';
$BODY$
BEGIN
(CASE
WHEN NEW.col1='111' THEN NEW.col1='aaa'
WHEN NEW.col1='222' THEN NEW.col1='bbb'
WHEN NEW.col1='333' THEN NEW.col1='ccc'
ELSE NEW.col1='error'
END);
return NEW;
END;
$BODY$
这可能是之前的触发器(应该只影响当前值,而不是所有行):
CREATE TRIGGER schema.table_replace
BEFORE INSERT
ON schema.table
EXECUTE PROCEDURE schema.table_replace();
说实话,我对pgAdmin一无所知,它似乎比编写代码并使用查询工具运行它要复杂得多。问题是处理没有第二个值的情况(它是可选的),在这种情况下,该行的 col2 应该保持不变,并且 SQL 代码也会返回错误。 您能否提供一些帮助以使其运行并创建函数和触发器? 谢谢。
【问题讨论】:
标签: postgresql plpgsql database-trigger