2015-06-15 123 views
0

我有這個保留表,有RESERVATION_ID , ROOM_NUM, Date_Start , Date_End and cost columns。我想要做的是插入除成本之外的所有列,並自動填寫費用。MySQL列更新與觸發器

delimiter // 
CREATE TRIGGER upd_check before INSERT ON reservation 
    FOR EACH ROW 
    BEGIN 
     IF NEW.RESERVATION_COST = NULL THEN 
      SET NEW.RESERVATION_COST = 'timestampdiff(day, NEW.RESERVATION_STARTD, NEW.RESERVATION_ENDD)*70'; 
     END IF; 
    END;// 
delimiter ; 

我寫了這個trigger做到這一點,但每當我按應用插入一切都沒有被插入到RESERVATION_COST列。

爲什麼?

+0

如果條件爲「如果NEW.RESERVATION_COST爲NULL THEN''則檢查是否有任何影響!! ?? –

+0

不要在SQL語句中使用= null。使用爲空。 – Tim3880

+0

謝謝大家:D @ Tim3880的方法工作 –

回答

0

如果我有足夠的聲望,我會把它放在評論中,但無論如何。觸發器不能在激活它們的同一個表上進行操作。似乎限制,但我們有同樣的問題。

這個鏈接沒有明確地說這個,但它確實說「在關聯表中」。不一樣:https://dev.mysql.com/doc/refman/5.0/en/triggers.html

+0

我做了它的工作我只需要改變= Null並從SET語句中刪除''' –

+0

感謝您更新我。我錯了,學到了一些東西。 –

+0

沒問題的伴侶 –

0

你不能比較一個值到NULL,你需要檢查它是否代替IS NULL

例如

IF NEW.RESERVATION_COST IS NULL THEN