我正在尝试创建一个触发器来将客户姓名列中名字和姓氏的首字母大写。 但是在声明部分收到错误: 在此位置声明无效,预计结束
这是目前的代码:
USE TRADING;
DELIMITER //
CREATE TRIGGER capitalise_surname
BEFORE INSERT ON Customer
FOR EACH ROW
BEGIN
SET NEW.Customer_name = CONCAT(UPPER(SUBSTRING(NEW.Customer_Name, 1, 1)),
LOWER(SUBSTRING(NEW.Customer_Name FROM 2)));
DECLARE space_index INT;
SET space_index = LOCATE(' ', NEW.Customer_name);
IF space_index > 0 THEN
SET NEW.Customer_name = CONCAT(LEFT(NEW.Customer_name, space_index),
UPPER(SUBSTRING(NEW.Customer_name, space_index + 1, 1)),
LOWER(SUBSTRING(NEW.Customer_name FROM space_index + 2)));
END IF;
END //
DELIMITER ;
我尝试删除声明和空间索引部分。
https://dev.mysql.com/doc/refman/8.0/en/declare.html
只能在DECLARE
复合语句中使用,并且 必须位于其开头,位于任何其他语句之前。BEGIN ... END
(强调我的)