在插入触发器之前生成ID

时间:2017-03-30 18:57:05

标签: mysql

我在使用表的AUTO_INCREMENT时遇到问题,所以我创建了一个触发器来尝试解决问题

CREATE DEFINER=`medplantoes01`@`%` TRIGGER `medplantoes01`.`MEDICO_BEFORE_INSERT` BEFORE INSERT ON `MEDICO` FOR EACH ROW
BEGIN
   SET NEW.id_medico = (select max(id_medico) + 1 from MEDICO);
END

但是我在插入时收到此消息:

  

错误号码:1062重复录入' 0'关键' PRIMARY'

在列ID_MEDICO上取消选中

AUTO_INCREMENT选项,但即使使用此选项,我也会收到相同的消息。

使用MySQL 5.7

PS:对不起我的英文:P

1 个答案:

答案 0 :(得分:0)

好的,我不会说葡萄牙语,但我可以解读这个......

NEW.id_medico = (select max(id_medico) + 1 from MEDICO);

这不起作用。如果两个客户端同时尝试插入,则会获得重复的ID。这是一个非常非常糟糕的主意。不要这样做。

AUTO_INCREMENT旨在解决此问题。用它。你说它不起作用:解释如何。

用英语......