MySQL触发器可以与多个表或所有表相关联吗?

时间:2013-07-02 22:53:24

标签: mysql triggers

我创建了这个触发器,将值计算值插入表中的字段,以防用户忘记自己输入数据:

DELIMITER //
CREATE TRIGGER OnNewTableRegistry BEFORE INSERT ON eduardo8_plataforma.tabela
FOR EACH ROW
BEGIN
    IF NEW.ut = null THEN
        SET NEW.ut = GetUT('tabela');
    ELSEIF NEW.ut = '' THEN
        SET NEW.ut = GetUT('tabela');
    END IF;
END;
//
DELIMITER ;

但是我需要对该数据库中的每个表执行相同的操作。是否可以对所有表使用相同的触发器,如果​​是,我们如何在指定tabela的第6行和第8行中获取触发使用它的表的名称?

我需要这样的东西:

DELIMITER //
CREATE TRIGGER OnNewTableRegistry BEFORE INSERT ON (* as _TableName)
FOR EACH ROW
BEGIN
    IF NEW._TableName.ut = null THEN
        SET NEW._TableName.ut = GetUT(_TableName);
    ELSEIF NEW._TableName.ut = '' THEN
        SET NEW._TableName.ut = GetUT(_TableName);
    END IF;
END;
//
DELIMITER ;

1 个答案:

答案 0 :(得分:2)

没有。 syntax没有规定它。

允许它是没有意义的,因为NEW关键字必须引用特定的行定义。如果您有两个具有相同行定义的表,则应将它们放入一个表中,另一列表示差异。