如果在 concat 里面

k10*_*102 3 mysql sql concat

这是我试图用来创建触发器的代码:

-- Dumping structure for trigger kavanga_lead.click_links_insert
DROP TRIGGER IF EXISTS `click_links_insert`;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='';
DELIMITER //
CREATE TRIGGER `click_links_insert` AFTER INSERT ON `click_links` FOR EACH ROW BEGIN
    INSERT INTO actions_log 
        (
            `uid`,
            `table`,
            `action`,
            `new`
        )
        VALUES
        (  
            @user_id,
            'click_links',
            'insert',
            concat(NEW.id ,'|', NEW.`contents`, '|', NEW.channel_id, '|', NEW.name, '|', NEW.hidden, '|', if(NEW.prefix_id is null,'',NEW.prefix_id) '|', if(NEW.postfix_id is null,'',NEW.postfix_id))
        );
END//
DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;
Run Code Online (Sandbox Code Playgroud)

我不断收到错误 (1583) Incorrect parameters in the call to concat。如果我不使用if(NEW.prefix_id is null,'',NEW.prefix_id)而只使用NEW.prefix_id. 但是这个字段可以null,所以所有concat的结果都变成null了。

那么,问题是如何IFCONCATcall 中使用staments ?

Ome*_*esh 5

那是因为你commaif(NEW.prefix_id is null,'',NEW.prefix_id) 尝试后忘记了一个:

concat(NEW.id ,'|', NEW.`contents`, '|', NEW.channel_id, '|', NEW.name, '|', NEW.hidden, '|', if(NEW.prefix_id is null,'',NEW.prefix_id), '|', if(NEW.postfix_id is null,'',NEW.postfix_id))
Run Code Online (Sandbox Code Playgroud)