我想创建一个 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, "Column 'activityCode' can not be null")
有什么想法吗?谢谢!
最佳答案
Null 不等于 SQL 中的 null。
所以这永远不会是真的:
IF(newNumber=NULL) THEN
您需要:
IF(newNumber IS NULL) THEN
关于MySQL触发器自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366740/