2017-05-11 69 views
-1

我有一個用戶抱怨表,其中兩列指定每個ID抱怨排如何在兩列中使用自動遞增值

`complaint_id` MEDIUMINT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
`complaint_code` VARCHAR(20) NOT NULL , 

我想,如果用戶提供complain_code然後它會正常插入complaint_id有其AUTO_INCREMENTED值, ,但是如果用戶跳過填寫complain_code字段,那麼它也會通過與complaint_id相同的complain_id的AUTO_INCREMENTED值填充。

我可以用Insert然後更新語句來做,但我只想使用 單一插入語句。

我不知道該怎麼做,請幫忙。我正在使用mysql,PDO,php

+0

不是一個好主意,但你可以得到最大的ID,並使其+ 1 –

+0

@知識....無法使用與插入相同的目標 – santosh

回答

2

如果您使用MySQL觸發器,這並不難。

觸發器可以設置爲在您的表中完成INSERT後自動執行,並且它將檢查comaplain_code是否爲空。如果它是空白,將使用complain_id的下一個自動增量值的comaplain_code還有:

運行此創建觸發器:

DELIMITER $$ 
CREATE TRIGGER update_complain_code 
BEFORE INSERT ON `user_complaints` FOR EACH ROW 
begin 
    DECLARE next_id INT; 
    SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='user_complaints'); 

    IF NEW.complaint_code is NULL OR NEW.complaint_code = '' 
    THEN 
     SET NEW.complaint_code=next_id; 
    END IF; 
END; 
$$ 
DELIMITER ;