仅当存在特定的 NEW 值时才执行 MySQL 触发器

时间:2021-01-26 16:24:04

标签: mysql sql database triggers mariadb

我只想在 NEW 中的特定值存在且不为空时执行我的 MySQL(MariaDB) 触发器。

如何将我的触发器包装在 if 子句中,以检查新插入的内容是否包含 Name 的值。因此,如果有未设置字段 Name 的新插入或更新查询,我不想运行触发器。

我试过了

IF NEW.Name IS NOT NULL
BEGIN
 ...
END

但它不起作用。

我的实际触发器代码确实正确使用了 NEW 中的值。

我的触发器看起来像这样。

INSERT INTO Produkte (Textilkennzeichen, Produktnummer, Bestand, createdAt, updatedAt)
VALUES (NEW.Textilkennzeichen, NEW.Produktnummer,
@Bestand := (
    SELECT IFNULL(SUM(`Anzahl`), 0)
    FROM Eintragungen
    WHERE Produziert = true
    AND Textilkennzeichen = NEW.Textilkennzeichen
    AND Produktnummer = NEW.Produktnummer
)
-
((
    SELECT IFNULL(SUM(`Anzahl`), 0) 
    FROM Eintragungen
    WHERE Verkauf = true
    AND Textilkennzeichen = NEW.Textilkennzeichen
    AND Produktnummer = NEW.Produktnummer
)
+
(
    SELECT IFNULL(SUM(`Anzahl`), 0)
    FROM Eintragungen
    WHERE Schenkung = true
    AND Textilkennzeichen = NEW.Textilkennzeichen
    AND Produktnummer = NEW.Produktnummer
)
+
(
    SELECT @amount_r := IFNULL(SUM(`Anzahl`), 0)
    FROM Eintragungen
    WHERE Reklamation = true
    AND Textilkennzeichen = NEW.Textilkennzeichen
    AND Produktnummer = NEW.Produktnummer
)), NOW(), NOW())
ON DUPLICATE KEY UPDATE Bestand = @Bestand

1 个答案:

答案 0 :(得分:1)

代码应该是

if something then
   insert ...;
endif;

大概是你的ide创建了..对于每一行开始......结束

所以你最终得到 创建触发器.. 每行 开始 如果有那么 插入 ...; 万一; 结束