2017-09-04 91 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;