Я пытаюсь использовать арифметику c на триггере, но мой триггер не работает - PullRequest
0 голосов
/ 13 апреля 2020
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; ELSE total = harga * NEW.jml_beli; END IF; ' в строке 11

1 Ответ

0 голосов
/ 13 апреля 2020

Я подозреваю, что вы хотите перед триггером вставки, чтобы вы могли изменить значение столбца в строке. Как то так:

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 ;
...