2014-03-13 262 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