加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Postgresql插入触发器设置值

发布时间:2020-12-13 16:43:08 所属栏目:百科 来源:网络整理
导读:假设在Postgresql中,我有一个表T,其中一列是C1。 我想在新记录添加到表T时触发一个函数。该函数应检查新记录中列C1的值,如果它为空/空,则将其值设置为“X”。 这可能吗? 您需要一个触发器是正确的,因为为列设置默认值将不起作用 – 默认值仅适用于空值
假设在Postgresql中,我有一个表T,其中一列是C1。

我想在新记录添加到表T时触发一个函数。该函数应检查新记录中列C1的值,如果它为空/空,则将其值设置为“X”。

这可能吗?

您需要一个触发器是正确的,因为为列设置默认值将不起作用 – 默认值仅适用于空值,并且不能帮助您防止空值。

在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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读