【问题标题】:Different ways to make "Create or replace" function in PLpgSQL在 PLpgSQL 中创建“创建或替换”功能的不同方法
【发布时间】:2021-05-07 12:08:47
【问题描述】:

我对数据库系统、SQL、PLpgsql、postgresql 等非常陌生。我正在学习创建和替换,我只能想到一种方法来制作创建和替换功能,例如:


RETURNS trigger AS $$
--Begins function
BEGIN

    perform phone, email from contact ;

if (new.phone) is null  OR (new.email) is null then RAISE EXCEPTION 'Bitte geben Sie mindestens eine der folgenden Informationen an: 1. Handy-Nummer 2. E-Mail Adresse' ;
END IF; 
Return new;
END;
$$

我怎样才能以不同的方式编写相同的函数,但要短得多,这可能吗,如果可能的话,有人可以告诉我如何使用它,重写此函数的可能方法吗?

【问题讨论】:

    标签: sql postgresql plpgsql


    【解决方案1】:

    PERFORM,实际上是对整个表执行顺序扫描然后丢弃结果,完全没有必要,你应该删除它。

    NEW 自动填充到FOR EACH ROW 触发INSERT OR UPDATE,因此仅第二行就足够了。使用BEFORE 触发器来提高性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 2016-11-14
      • 1970-01-01
      • 2018-06-10
      • 2010-11-14
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多