Mysql 在表触发器中强制转换new.value时出现语法错误

Mysql 在表触发器中强制转换new.value时出现语法错误,mysql,triggers,syntax-error,Mysql,Triggers,Syntax Error,有什么问题吗 DELIMITER ;; CREATE TRIGGER `UPD_after_financialStatus` AFTER UPDATE ON `financialStatus` FOR EACH ROW BEGIN DECLARE `@grossAmountTillNow` varchar(100); SET @grossAmountTillNow = CONCAT( CAST(OLD.grossAmountTillNow AS varchar(50)), "-

有什么问题吗

DELIMITER ;;
CREATE TRIGGER `UPD_after_financialStatus` AFTER UPDATE ON `financialStatus` 
FOR EACH ROW
BEGIN
DECLARE `@grossAmountTillNow` varchar(100);
SET @grossAmountTillNow = CONCAT(
    CAST(OLD.grossAmountTillNow AS varchar(50)),
    "---",
    CAST(NEW.grossAmountTillNow AS varchar(50)));
...
它说,'varchar(50)),“--”,CAST(NEW.grossAmountTillNow AS varchar(50))附近出现
语法错误;在第4行设置@grossAmoun

您能帮忙吗?

请比较:

SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(50))
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“VARCHAR(50))”附近使用的正确语法

2012-04-10 12:30:29

允许值的解释见。

请比较:

SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(50))
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“VARCHAR(50))”附近使用的正确语法

2012-04-10 12:30:29


有关允许的值的说明,请参见。

您确定可以在
CAST
中使用
varchar
?根据你不能…@Marco,我们可以在
触发器中使用
CAST()
@diEcho:是的,但是根据手册,IMHO
varchar
不是有效的dest类型。
grossamounttillow
的数据类型是什么?试着写
CHAR(50)
而不是
varchar(50)
您确定可以在
CAST
内部使用
varchar
吗?根据你不能…@Marco,我们可以在
触发器中使用
CAST()
。@diEcho:是的,但是根据手册,IMHO
varchar
不是有效的dest类型。
grossAmountTillNow
的数据类型是什么?试着写
CHAR(50)
而不是
varchar(50)