我创建了这个触发器来将计算值插入到表中的字段中,以防用户忘记自己输入数据:
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 ;
但我需要对该数据库中的每个表执行相同的操作。是否可以对所有表使用相同的触发器,如果是,我们如何获取在第 6 行和第 8 行中触发使用它的表的名称,其中有tabela
指定的?
我需要这样的东西:
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 ;
No. The syntax不提供它。
允许它是没有意义的,因为 NEW 关键字必须引用特定的行定义。如果您有两个具有相同行定义的表,则应将它们放入一个表中,并用另一列表示差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)