我只想在 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
答案 0 :(得分:1)
代码应该是
if something then
insert ...;
endif;
大概是你的ide创建了..对于每一行开始......结束
所以你最终得到 创建触发器.. 每行 开始 如果有那么 插入 ...; 万一; 结束