MySQL触发器:插入变量

wfsdck30  于 2022-11-21  发布在  Mysql
关注(0)|答案(2)|浏览(134)

下面的代码向插入的每一个新行添加一个国家/地区代码,在本例中,“US”代表“United States”。

CREATE TRIGGER `country` BEFORE INSERT ON `test`
FOR EACH ROW SET NEW.`countryCode` = CASE 
WHEN NEW.`country` LIKE 'United States' THEN 'US'
END

上面的代码运行良好,但我还想插入一个变量。下面的代码生成了一个#1064语法错误:

SET @countryCode = 'US'
CREATE TRIGGER `country` BEFORE INSERT ON `test`
FOR EACH ROW SET NEW.`countryCode` = CASE 
WHEN NEW.`country` LIKE 'United States' THEN @countryCode
END

最后,我希望能够使用一个变量,以便可以将多个国家/地区代码连接并插入到同一列中。

iaqfqrcu

iaqfqrcu1#

您需要在触发器内定义变量。请尝试:

delimiter //
CREATE TRIGGER `country` BEFORE INSERT ON `test`
FOR EACH ROW 
BEGIN
 SET @countryCode = 'US';
 SET NEW.`countryCode` = 
        CASE WHEN NEW.`country` LIKE 'United States' 
           THEN @countryCode end;
END; //
delimiter ;
iezvtpos

iezvtpos2#

这一做法奏效了:

CREATE TRIGGER `country` BEFORE INSERT ON `test`
FOR EACH ROW IF (NEW.tagline LIKE '%United States%') THEN
SET @countryCode = "US";
SET NEW.`taglineCode` = @countryCode;
END IF

相关问题