DECLARE 在此位置无效,需要 END (TRIGGER)

问题描述 投票:0回答:1

我正在尝试创建一个触发器来将客户姓名列中名字和姓氏的首字母大写。 但是在声明部分收到错误: 在此位置声明无效,预计结束

这是目前的代码:

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 ;

我尝试删除声明和空间索引部分。

sql mysql triggers mysql-workbench declare
1个回答
0
投票

https://dev.mysql.com/doc/refman/8.0/en/declare.html

DECLARE
只能在
BEGIN ... END
复合语句中使用,并且 必须位于其开头,位于任何其他语句之前。

(强调我的)

© www.soinside.com 2019 - 2024. All rights reserved.