我有一个用户投诉表,其中两列指定每个投诉行的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
答案 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 ;