MySQL触发器自动增量

时间:2014-03-13 00:27:33

标签: mysql sql triggers

我想创建一个mysql(v5.5)触发器,每次插入一个值时,它会以随机数执行自动增量。这就是我在做的事情:

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的最大值,除非我第一次插入行,我想将Max(activityCode)设置为100

当我第一次插入一行时,MySQL只报告错误:(1048,“列'activityCode'不能为空”)

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

在SQL中Null不等于null。

所以这永远不会成真:

IF(newNumber=NULL) THEN

你需要:

IF(newNumber IS NULL) THEN