我正在尝试在触发器上使用算术,但我的触发器不起作用

Posted

技术标签:

【中文标题】我正在尝试在触发器上使用算术,但我的触发器不起作用【英文标题】:I'm trying to use arithmatic on trigger, but my Trigger doesn't work 【发布时间】:2020-04-13 11:26:00 【问题描述】:
DELIMITER //
CREATE TRIGGER afterPembelian
AFTER INSERT ON pembelian

FOR EACH ROW BEGIN
DECLARE harga INT(20);
DECLARE total INT(20);

SELECT harga_obat INTO harga FROM daftar_obat WHERE kode_obat=NEW.kodeobat;

IF(DAYNAME(NEW.tanggal_pem)='Monday') THEN
    total = (harga-harga/10)*NEW.jml_beli;
ELSE 
    total = harga * NEW.jml_beli;
END IF;

SELECT * FROM daftar_obat;
SELECT * FROM pembelian;
SELECT total;

END//
DELIMITER ;

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 '= (harga-harga/10)*NEW.jml_beli; 附近使用的正确语法; 别的 总计 = harga * NEW.jml_beli; 万一;'在第 11 行

【问题讨论】:

total = 此语法不正确,您在为变量赋值时需要设置。 如果 daftar_obat.kode_obat 不是主要/不符合索引的,则将 LIMIT 1 添加到 SELECT harga_obat INTO harga FROM daftar_obat WHERE kode_obat=NEW.kodeobat; 【参考方案1】:

我怀疑您想要一个 before 插入触发器,以便您可以更改行中的列值。像这样的:

CREATE TRIGGER afterPembelian BEFORE INSERT ON pembelian
FOR EACH ROW
BEGIN
    DECLARE harga INT(20);
    DECLARE total INT(20);

    SELECT harga_obat INTO harga
    FROM daftar_obat o
    WHERE o.kode_obat = NEW.kodeobat;

    IF (DAYNAME(NEW.tanggal_pem) = 'Monday') THEN
        SET NEW.total = (harga  -harga / 10) * NEW.jml_beli;
    ELSE 
        SET NEW.total = harga * NEW.jml_beli;
    END IF;
END//
DELIMITER ;

【讨论】:

但我想显示总计,而总计不是列。我正在尝试,但我的触发器无法再次工作 @SylviaHelmi 。 . .您应该针对该问题提出另一个问题。

以上是关于我正在尝试在触发器上使用算术,但我的触发器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

尝试触发 UILocalNotification 不起作用

OnTriggerEnter2d 统一不起作用

插入触发器后MySQL不起作用

我正在尝试在 Python Tkinter 中使用 os.system 触发一个新窗口,但它不起作用

PHAssetCreationRequest 不起作用

更新触发器后 SQL Server 不起作用