2012-06-28 48 views
1

我正在嘗試自動執行我的觸發器過程,以便我不必爲要使用的每個表手動創建觸發器。不幸的是,我收到一個錯誤,說有一個語法錯誤。爲什麼我不能用PDO創建觸發器?

這裏是我的代碼

$updateTrigger = "DROP TRIGGER IF EXISTS {$table}Update 
    CREATE TRIGGER {$table}Update AFTER UPDATE ON $table 
    FOR EACH ROW 
    BEGIN 
     DECLARE N DATETIME; 
     SET N = now(); 
     INSERT INTO StagesHistory (Stage, StageID, Date, Action) 
     VALUES ('$table', NEW.ID, N, ?); 
    END"; 

$ut = $dbh->prepare($updateTrigger); 
$ut->execute(array($update)); 
$error = $ut->errorInfo(); 

評估$error返回該錯誤消息:

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本在線路附近使用「CREATE TRIGGER TranslationUpdate更新後,對翻譯 FOR EACH R」正確的語法手冊2

我無法弄清楚什麼樣的錯誤是在談論。有什麼問題,我該如何解決?

回答

3

DROP TRIGGER ...CREATE TRIGGER ...是兩個單獨的聲明。您至少需要將它們與;分開,可能在不同的查詢中執行它們。

+0

哇,這是令人難以置信的簡單 –

1

是不是缺少分號?它應該是這樣的:DROP TRIGGER IF EXISTS {$table}Update;

相關問題