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

标签 mysql triggers phpmyadmin

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

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

触发器

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。

最佳答案

试试这个,它可以解决您的问题。

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

关于mysql - 如何使用触发器生成字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247748/

相关文章:

php 反序列化返回 false

mysql - Doctrine 1.2 : get products where associated simple products have stock

php - 插入触发器错误后的MySQL PHP游戏

mysql - 无法导出数据库

php - SQL 或不返回所有行

mysql - 如何在 php 和 mysql 中修复 mysql 大写查询

javascript - JS中对象变量改变事件如何处理 ||查询?

mysql - 在插入期间将自动递增的值复制到其他列

php - MySQL 问题重新连接 (mysqld.exe) 一直报错

java - 更新表的多行最快的方法是什么