Mysql 在插入触发器之前在上生成ID

Mysql 在插入触发器之前在上生成ID,mysql,Mysql,我在表格的自动递增方面遇到了问题,所以我创建了一个触发器来尝试解决这个问题 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 但我在插入时收到了以下信息: 错

我在表格的自动递增方面遇到了问题,所以我创建了一个触发器来尝试解决这个问题

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键“PRIMARY”的重复条目“0”

列ID上的自动增量选项未选中,但即使使用此选项,我也会收到相同的消息

使用MySQL 5.7


PS:对不起,我的英语是:p

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

NEW.id_medico = (select max(id_medico) + 1 from MEDICO);
这是行不通的。如果两个客户端同时尝试插入,它们将获得重复的id。这是一个非常非常糟糕的主意。不要这样做

自动增量就是为了解决这个问题而设计的。使用它。你说它不起作用:解释一下怎么做


用英语……

嗨!谢谢你的答复。。因此,我将ID_MEDICO标记为自动增量,在表选项中,初始值是正确的,但当我尝试插入时,会显示消息“错误编号:1062键“PRIMARY”的重复条目“0”,因此我不知道有什么错误,也不知道可以检查您的insert sql语句。也许您的代码中有一个ORM或其他东西,在插入时错误地将列设置为0?您能提供CREATETABLE语句吗?显示创建表您的\u模式。您的\u表;