我有一个在other table上运行other table的触发器
BEGIN
DECLARE test VARCHAR(3000);
SELECT APPLICATION.APP_DATA into @test FROM APPLICATION WHERE APP_NUMBER=1 LIMIT 1;
ENDAPP_NUMBER的类型是INT,当触发器运行时,@test是NULL。为什么?
当我这么做
SELECT APPLICATION.APP_DATA
FROM APPLICATION
WHERE APP_NUMBER=1 LIMIT 1;` 它返回一个正确的值!
发布于 2014-10-08 16:44:55
首先,MySQL支持两种不同的变量--局部变量和用户(会话)变量的类型。
现在,使用DECLARE定义一个局部变量test,然后尝试将一个值赋值给会话变量@test。
我们完全不清楚你要实现什么和为什么,但下面是一个有用的例子
DELIMITER //
CREATE TRIGGER my_trigger
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
DECLARE test VARCHAR(32);
SELECT app_data INTO test FROM application WHERE app_number = 1 LIMIT 1;
SET NEW.data = test;
END
DELIMITER ;这是SQLFiddle演示
https://stackoverflow.com/questions/26261270
复制相似问题