0
我有一個表discussions
,它存儲我的網站上的帖子數據。mysql觸發器的奇怪行爲
現在我有2個觸發器,其中一個插入path
列時添加新行,另外一個用於更新一行時更新path
如下:
CREATE TRIGGER discussions_trigger BEFORE INSERT ON discussions FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='discussions');
IF(NEW.visibility<1)
THEN
SET NEW.path = CONCAT('discussions.php?id=',next_id);
ELSEIF(NEW.visibility>=1)
THEN
SET NEW.path = CONCAT('private.php?id=',next_id);
END IF;
CREATE TRIGGER discussions_update_trigger BEFORE UPDATE ON discussions FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = OLD.id;
IF(NEW.visibility<1)
THEN
SET NEW.path = CONCAT('discussions.php?id=',next_id);
ELSEIF(NEW.visibility>=1)
THEN
SET NEW.path = CONCAT('private.php?id=',next_id);
END IF;
這枚作品應該每隔一段時間,當我嘗試插入或更新表discussions
時,出現以下錯誤:
用戶'abhishek'@'An unknown IP
'未定義。
但是,用戶abhishek
只允許從localhost
。
嘗試了一切後,我發現刪除觸發器,然後重新創建它們可以解決問題。當我再次遇到錯誤時,我重新創建了觸發器並且它工作正常。這裏有什麼問題?
你是如何創建觸發器?它是通過'mysqli'嗎?另外,你能列出DB上觸發器的細節嗎?使用'如何觸發\ G'並檢查'definer'的值?它是'user @ localhost'? – visakh
@visakh我使用默認的mysql客戶端創建觸發器。看來我不能在mysql客戶端中使用'如何觸發\ G'。它給出了錯誤。 –
對不起,這是一個類型從我的結束...命令是'show triggers \ G' – visakh