【问题标题】:How to return a MySQL procedure as a trigger?如何将 MySQL 过程作为触发器返回?
【发布时间】:2012-06-09 11:59:48
【问题描述】:

我是 MySQL 程序的新手。我需要模拟一些我通常使用 PLpgSQL 执行的代码,如下所示:

DROP FUNCTION IF EXISTS "aprtr_controlo_tabelas_ins_upd" () CASCADE;
CREATE OR REPLACE FUNCTION "aprtr_controlo_tabelas_ins_upd" ()         
RETURNS trigger AS

$BODY$
        BEGIN
            IF (TG_OP = 'INSERT') THEN
                NEW.data_ult_actual := current_timestamp;
                NEW.id_utiliz_ins := current_user;
            RETURN NEW;
            ELSEIF (TG_OP = 'UPDATE') THEN
                NEW.data_ult_actual := current_timestamp;
                NEW.id_utiliz_upd := current_user;
            RETURN NEW;
            END IF;

            RETURN NULL;
        END;
$BODY$
        LANGUAGE PLpgSQL
        CALLED ON NULL INPUT
        VOLATILE
        EXTERNAL SECURITY DEFINER; 

可以在 MySQL 中编写返回触发器的过程吗?或者更好的是,我可以在INSERT 或UPDATE 操作中使用过程代码并将其称为触发器吗?

最好的问候,

【问题讨论】:

  • “返回触发器的程序”是什么意思?触发器附加到特定表,并在插入/更新/删除某些数据时执行。您可以使用过程来定义触发器。

标签: mysql triggers plpgsql procedure


【解决方案1】:

MySQL 仅支持特定的数据类型作为函数返回类型。根据 MySQL 文档,trigger 不是数据类型。作为数据类型的自定义对象不是AFAIK的功能。支持的数据类型详见here

参考:MySQL CREATE FUNCTION Syntax.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2017-08-12
    • 2020-07-25
    • 2017-09-08
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多