【问题标题】:SQL trigger: I want to make TRIGGER AFTER UPDATE and update it takes data from a different tableSQL 触发器:我想让 TRIGGER AFTER UPDATE 并更新它从不同的表中获取数据
【发布时间】:2020-12-10 17:48:12
【问题描述】:
BEGIN
IF new.jenis_transaksi ='Alokasi Keluar'
THEN
 UPDATE prediksi_alokasi SET total_pengeluaran = (
    SELECT SUM(jumlah_alokasi)
    FROM alokasi_dana_desa 
    WHERE jenis_transaksi ='Alokasi Keluar' 
    AND YEAR(tanggal_alokasi) = new.YEAR(tanggal_alokasi)
    AND MONTH(tanggal_alokasi) = new.MONTH(tanggal_alokasi))

WHERE bulan = new.MONTH(tanggal_alokasi);
end if ;
END

【问题讨论】:

  • 您有问题吗?
  • 是的,上面的查询显示 WHERE bulan = new.MONTH(tanggal_alokasi); 中有错误
  • 您应该分享有关您的问题的更多信息。请参阅此链接How to Ask
  • MONTH(new.tanggal_alokasi) 可能
  • 您必须提供:两个表的 DDL、完整的触发器代码、示例源表数据和所需的最终数据状态。如果您收到一些错误消息,则必须完整引用它。

标签: mysql sql triggers


【解决方案1】:

update 的正确语法是:

UPDATE prediksi_alokas pa
    SET total_pengeluaran = (SELECT SUM(add.jumlah_alokasi)
                             FROM alokasi_dana_desa add
                             WHERE add.jenis_transaksi = 'Alokasi Keluar' AND
                                   EXTRACT(YEAR_MONTH FROM add.tanggal_alokasi) = EXTRACT(YEAR_MONTH FROM new.tanggal_alokasi)
                            )
    WHERE pa.bulan = MONTH(new.tanggal_alokasi);

这至少应该有助于触发,尽管可能还有其他问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多