我在MySQL中有一個」之前插入觸發器「的不一致錯誤,無法找出原因。觸發器中的MySQL錯誤「NEW」中的未知列「
我有以下描述的表:
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| ROW_ID | int(11) | NO | PRI | 0 | |
| ID | int(11) | NO | UNI | NULL | |
| TITLE | varchar(32) | NO | | NULL | |
| TEXT | varchar(500) | NO | | NULL | |
| URL | varchar(200) | YES | | NULL | |
| MINUTE_IN | int(11) | YES | | NULL | |
| SECOND_IN | int(11) | YES | | NULL | |
| TVSHOW_ID | int(11) | NO | MUL | NULL | |
| IMAGE | varchar(4000) | YES | | NULL | |
+-----------+---------------+------+-----+---------+-------+
而且我用下面的語句觸發器:
delimiter $$
CREATE TRIGGER ACTIVATE_IRT_CONTENT BEFORE INSERT ON WEXTRAS_CONTENT
FOR EACH ROW
BEGIN
IF (SELECT s.ACTIVE
from WEXTRAS_TVSHOW s
where s.id = NEW.tvshow_id) = 1 AND NEW.MINUTE_IN = 0 AND NEW.SECOND_IN = 0
THEN SET NEW.MINUTE_IN = TIMESTAMPDIFF(MINUTE,(select INIT_TIME from WEXTRAS_TVSHOW s
where s.id = NEW.tvshow_id
),sysdate());
SET NEW.SECOND_IN = SECOND(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,(select INIT_TIME from WEXTRAS_TVSHOW s
where s.id = NEW.tvshow_id
),sysdate())));
END IF;
END$$
delimiter ;
的問題是,有時返回以下錯誤:
'NEW'中的未知列'MINUTE_IN'
發生此錯誤時,它不會停止,直到我刪除並使用完全相同的語句重新創建觸發器。當我這樣做時,錯誤停止發生,並且幾次插入將毫無問題地發生,直到同樣的問題返回,顯然沒有理由。
有人可以幫我解決這個問題嗎? 在此先感謝。
爲什麼你的IF條件中有3個額外的分號?和其他地方的其他分號,我會認爲它會抱怨語法錯誤。 –
糟糕...這實際上是一個複製/粘貼錯誤,當恢復一些過去的嘗試,看看問題是不會再發生。 我編輯了我的原始文章以糾正它。 對不起...... – barras
+1我想知道答案是什麼,因爲我認爲你已經發現了一個非常奇怪的錯誤。 –