iT邦幫忙

0

MySQL Triggers 沒有觸發. 怎麼回事???

  • 分享至 

  • xImage
  •  

我是新手, 最近自學MySQL
學到Trigger的部分, 卻不會觸發, 實在找不到原因

希望有人可以幫忙一下:

以下是語法:

第一部分
DELIMITER $$

CREATE TRIGGER payments_after_insert
AFTER INSERT ON payments
FOR EACH ROW
BEGIN
UPDATE invoices
SET payment_total = payment_total + NEW.amount
WHERE invoice_id = NEW.invoice_id;
END $$

DELIMITER ;

第二部分
INSERT INTO payments
VALUES (DEFAULT, 5, 3, '2019-01-01', 10, 1)

我依照影片的流程先執行了第一部分, 再執行第二部分
其中第二部分的插入都有成功, 但是第一部分就是沒有
我有去更新invoices表格, 但是就是沒有動作

實在不知該如何是好
請問有人可以幫忙解答嗎?
感謝


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
一級屠豬士
iT邦大師 1 級 ‧ 2023-11-14 17:47:45

不是不會觸發,是 invoices 裡沒有對應的資料,就無法 update了啊.

依照影片,是什麼影片? 你看的影片,不要發問要人通靈啊.

那個 trigger 寫法可能不完整.
要能做判斷,沒有對應就做insert,有對應的做update.

還要看整個設計的情況,來設計trigger.

這是不同的table name, 但是類似的情況啦,你參考看看.

DELIMITER $$
CREATE TRIGGER sales_bi_trg
BEFORE INSERT ON sales
FOR EACH ROW
BEGIN
  DECLARE row_count INTEGER;
  
  SELECT COUNT(*) INTO row_count
    FROM customer_sales_totals
   WHERE customer_id=NEW.customer_id;
   
  IF row_count > 0 THEN
    UPDATE customer_sales_totals
    SET sale_value=sale_value+NEW.sale_value
    WHERE customer_id=NEW.customer_id;
  ELSE
    INSERT INTO customer_sales_totals
    (customer_id,sale_value)
    VALUES(NEW.customer_id,NEW.sale_value);
  END IF;
END$$

看更多先前的回應...收起先前的回應...

您好

非常感謝您的回覆
因為影片是在付費平台上看的, 所以我沒有貼上影片連結
想說貼上來也看不到

我參考了您的code後將我的code修改如下就成功了

第一部分
DELIMITER //

CREATE TRIGGER payments_after_insert
AFTER INSERT ON payments
FOR EACH ROW
BEGIN
UPDATE invoices
SET payment_total = payment_total + NEW.amount
WHERE invoice_id = NEW.invoice_id;
END //

第二部分
INSERT INTO payments
VALUES (DEFAULT, 5, 3, '2019-01-01', 10, 1)

以上
非常感謝您撥空幫忙
謝謝

以後請到發問區發問,把程式碼用程式碼區塊包起來.
你的table 不知道結構,你要把相關資料補的越清楚越容易讓人幫忙.
去看看其他發問關於資料庫的,有的清楚,有的不清楚.
其實你好像也沒有修改啊.
什麼付費影片啊,他收費,然後你有問題來這裡問,你有沒有發覺
似乎怪怪的啊.
現在很多教學影片或課程,水準實在不太高明.慎之.

好的 我再看看別人都怎麼做的

確實, 我其實沒什麼改, 但很奇妙, 我改了它可以用, 但我去跑別的再回來, 它又有問題了, 一樣的問題

付費影片是codewithmosh
我這是第一次在付費網站學東西
但是它只有forum
討論的人次我看也不是很多
我有先在上面發問, 等了兩天沒有人理我, 只好試試在這問看看

我從開始學到現在也沒幾天
就是好奇, 到覺得有趣, 然後就花錢學

這個trigger我google發現台灣人很少討論
也許大家都沒問題
就我問題最多 好慘

您的code我會再認真看

如果您有興趣幫我解決此問題, 我願意付費跟您學習
很難找的到人教阿
都是看影片 google
我繼續去研究了
好卡

請祝我好運
謝謝

trigger 台灣用的人少.你若要練習trigger,可以再問.
歡迎走入資訊這條路.
你那段的問題在於 update 本身有where 條件, 那個trigger
只用了update,所以invoice_id 沒有的,就無法update了,
這時候應該用 insert,去新增第一筆有這個 invoice_id的資料.

請問您
如果trigger台灣用的人少, 那大家都是用哪個?
有沒有類似的功能?

感謝您

資訊實在是太有趣了, 認真後悔太晚接觸到

是台灣以前有些人 不愛用trigger, 然後也鼓吹 不要用 trigger.

我要留言

立即登入留言