2014-03-13 203 views
2

我想创建一个mysql(v5.5)触发器,每次插入一个值时都会通过随机数执行自动递增。下面是我在做什么:MySQL触发自动增量

DELIMITER $$ 

DROP TRIGGER IF EXISTS actCodeAuto 
$$ 
CREATE TRIGGER actCodeAuto BEFORE INSERT ON activity 
FOR EACH ROW BEGIN 
    DECLARE newNumber INT DEFAULT 1; 
    SELECT Max(activityCode) INTO newNumber FROM activity; 
    IF(newNumber=NULL) THEN 
    SET new.activityCode=100; 
    ELSE 
    SET new.activityCode = newNumber+FLOOR(1+RAND()*3); 
    END IF; 
END$$ 

DELIMITER ; 

我想自动增量随机数每次我插入行,除非我插入一行首次列activityCode的最大价值,我想设置最大(activityCode)到100

虽然我插入的第一次连胜,MySQL的只是报告错误:(1048,“列activityCode“不能为空”)

任何想法?谢谢!

回答

2

在SQL中Null不等于null。

因此,这将永远是真实的:

IF(newNumber=NULL) THEN 

您需要:

​​
+0

我试过。还是一样。非常困惑... – ray6080

+0

我已经想通了!谢谢! – ray6080