如何在两列中使用自动递增值

时间:2017-05-11 14:05:13

标签: php mysql auto-increment

我有一个用户投诉表,其中两列指定每个投诉行的ID

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

我想如果用户提供了complain_code,那么它将被正常插入并且complaints_id具有其AUTO_INCREMENTED值, 但是,如果用户跳过填充抱怨信息字段,而不是由抱怨_id的AUTO_INCREMENTED值填充,与抱怨_id一样。

我可以使用Insert then Update语句执行此操作,但我只想使用  单一插入声明。

我不知道怎么做,请帮忙。我正在使用mysql,PDO,php

1 个答案:

答案 0 :(得分:2)

如果你使用MySQL触发器,这并不难。

触发器可以设置为在表中完成INSERT后立即自动执行,并检查comaplain_code是否为空。如果它是空白,则将使用jobin_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 ;