挿入前に2列をトリガーで更新しようとしていますが、予期せぬ結果があります。私はいくつかのデータを挿入し、最後の2列は値とともに自動的に挿入されます、ここで私の最初の試みです。 MySQL - 関数を使用して列値を更新し、挿入前にトリガーする
参照してください。最後の2列はnullですが、トリガーを設定してその列を自動的に満たす関数を設定しています。ここでは正確に同じデータを持つ私の第二の試み
最後の2列は、データで満たされているが、最初の試みが失敗している理由を私は理解していませんか?
ここで私は
CREATE TRIGGER `set_total_harga` BEFORE INSERT ON `tbl_transaksi_detail`
FOR EACH ROW BEGIN
set NEW.total_harga = hitungTotalHargaPerItem(NEW.qty, NEW.harga_satuan);
END
トリガー
BEGIN
DECLARE
q,
id_toko INT;
SET
id_toko =(
SELECT DISTINCT
`tbl_transaksi`.`id_toko`
FROM
`tbl_transaksi`,
`tbl_transaksi_detail`
WHERE
`tbl_transaksi`.`no_transaksi` = no_trans
); IF unit = "PCS" THEN
SET
q =(
SELECT
`tbl_harga_jual`.`harga_pcs`
FROM
`tbl_harga_jual`
WHERE
`tbl_harga_jual`.`id_barang` = id_brg AND `tbl_harga_jual`.`id_toko` = id_toko
); RETURN q; ELSEIF unit = "PAK" THEN
SET
q =(
SELECT
`tbl_harga_jual`.`harga_pak`
FROM
`tbl_harga_jual`
WHERE
`tbl_harga_jual`.`id_barang` = id_brg AND `tbl_harga_jual`.`id_toko` = id_toko
); RETURN q; ELSEIF unit = "KARTON" THEN
SET
q =(
SELECT
`tbl_harga_jual`.`harga_karton`
FROM
`tbl_harga_jual`
WHERE
`tbl_harga_jual`.`id_barang` = id_brg AND `tbl_harga_jual`.`id_toko` = id_toko
); RETURN q;
END IF; RETURN q;
END
機能set_Harga_Unit
CREATE TRIGGER `set_harga_satuan` BEFORE INSERT ON `tbl_transaksi_detail`
FOR EACH ROW BEGIN
set NEW.harga_satuan = set_Harga_Unit(NEW.unit, NEW.id_barang, NEW.no_transaksi);
END
列harga_satuanのための機能hitungTotalHargaPerItem total_harga列に使用私のトリガー
BEGIN
DECLARE hasil int;
set hasil = qty * harga_satuan;
RETURN hasil;
END
この関数では:hitungTotalHargaPerItem set hasil = qty * harga_satuan; harga_satuanがnullの場合、結果はnullになると思います – Cherif