您需要一个触发器是正确的,因为为列设置默认值将不起作用 – 默认值仅适用于空值,并且不能帮助您防止空值。
原文链接:https://www.f2er.com/postgresql/193291.html在postgres中有几个步骤来创建触发器:
步骤1:创建一个返回类型触发器的函数:
CREATE FUNCTION my_trigger_function() RETURNS trigger AS ' BEGIN IF NEW.C1 IS NULL OR NEW.C1 = '''' THEN NEW.C1 := ''X''; END IF; RETURN NEW; END' LANGUAGE 'plpgsql'
步骤2:创建一个触发器,在插入之前触发,这允许您更改插入的值,调用上述函数:
CREATE TRIGGER my_trigger BEFORE INSERT ON T FOR EACH ROW EXECUTE PROCEDURE my_trigger_function()
你做完了。
看到the above code executing on SQLFIddle演示它工作正常!
您在注释中提到从子查询检索值“X”。如果是这样,请更改相关行,如:
NEW.C1 := (select some_column from some_table where some_condition);