如何使用触发器生成字段的值?

时间:2015-03-25 04:55:55

标签: mysql triggers phpmyadmin

我需要在MySQL中编写一个触发器,以确保无论何时将新行插入表中,其中一个字段的值将由其他字段值组合生成的特定值填充。 / p>

正如你刚才所看到的,我需要用 - 替换名称字段中的所有空格,然后用 - 和电话字段的值连接,最后将结果放入昵称字段。

触发

The following query has failed: "CREATE DEFINER=`root`@`localhost` 
TRIGGER `generatenickname` BEFORE INSERT ON `Users` 
FOR EACH ROW 
DECLARE temp = REPLACE(NEW.name, " ", "-"); 
SET NEW.nickname = concat(temp + '-' + NEW.phone);"
MySQL said: #1064 - You have an error in your SQL syntax; check the 
manual that corresponds to your MySQL server version for the right 
syntax to use near 'DECLARE temp = REPLACE(NEW.name, " ", "-"); SET 
NEW.nickname = concat(t' at line 1

如果我用BEGIN和END包围它;并删除" FOR EACH ROW"它没有显示错误,但在昵称字段中输入了0。

2 个答案:

答案 0 :(得分:0)

您的触发器包含多个语句,因此您需要将它们包含在BEGIN ... END块中。

请参阅文档: http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

答案 1 :(得分:0)

试试这可以解决你的问题。

DELIMITER $$
CREATE TRIGGER  `generatenickname` BEFORE INSERT ON `Users` 
FOR EACH ROW 
BEGIN
SET NEW.NAME = CONCAT(REPLACE(NEW.name, " ", "-") , '-' , NEW.phone);
END;
$$
DELIMITER ;