2017-09-04 151 views
0

我已經瀏覽了關於phpmyadmin上觸發器的其他答案。一個說要刪除BEGINEND,所以我做了。許多人說使用分隔符,我也這樣做。它仍然無法工作。無法在phpmyadmin上創建觸發器

代碼:

DELIMITER // 
CREATE TRIGGER trig_EnderecoUpdated 
ON tbdiref3_endereco AFTER UPDATE 
FOR EACH ROW 
    SET NOCOUNT ON 
    IF UPDATE(MORADOR_ID) 
     INSERT INTO 
      tbdiref3_historico(END_ID, DATA, USUARIO_ID, MORADOR_ANTIGO) 
      SELECT 
      d.ID_END, GETDATE(), USER_NAME(), d.MORADOR_ID 
      FROM 
      Deleted d 
// 
DELIMITER ; 

我也使用在表和列名反引號嘗試。它總是說同樣的事情,我在第2行的ON tbdiref3_endereco AFTER UPDATE FOR EACH ROW SET NOCOUNT ON IF UPDATE附近出現語法錯誤。任何線索?

+1

設置nocount是sql server是否正確標記了? –

+0

@P.Salmon所以我不應該在這種情況下使用'set nocount on'?我沒有使用SQL服務器。我只是把它放在那裏,因爲我讀過那個應該總是在觸發器上使用它。 – GeleiaDeMocoto

回答

0

它看起來像我是基於與MySQL不兼容的SQL Server示例。以下代碼最終被PHPMyAdmin接受:

CREATE TRIGGER trig_EnderecoUpdated AFTER UPDATE ON tbdiref3_endereco FOR EACH ROW 
    IF NEW.MORADOR_ID != OLD.MORADOR_ID THEN 
     INSERT INTO tbdiref3_historico(END_ID, DATA, USUARIO_ID, MORADOR_ANTIGO) VALUES (OLD.ID_END, NOW(), CURRENT_USER(), OLD.MORADOR_ID); 
    END IF;