这是我在mysql查询中的代码

require("lib/dbfunctions.inc.php");

    $qry = "select max(role_id) as nextrnum from Role";

    $nextrnum = execute_query($qry);

    $line = get_row($nextrnum);

    $nextRoleNum = "R" . str_pad((trim(substr($line['nextrnum'],1))+1),2,"0", STR_PAD_LEFT);


我在数据库中插入了一些数据,如下所示

INSERT INTO Role VALUES
 ('R0','IT'),
('R1','Staff'),
('R2','Administrator');


但是,当我单击添加表单链接时,我收到了error.r

ERROR: Record could not be added
Duplicate entry 'R0' for key 'PRIMARY'


不知道为什么我得到这个错误

最佳答案

主键应该是INT,而不是VARCHAR。
自动递增意味着您不必自己指定ID(因此是自动的),这是MYSQL的固有功能,在创建表结构时应使用该功能。


之所以会出现重复错误,是因为您多次运行了插入查询,从而试图输入一个重复ID,这是主键的本质所禁止的-这是唯一的标识符。

取而代之的是,您只需保留NULL值,而MYSQL会处理它(只要您将ID字段设置为自动递增):

INSERT INTO Role VALUES
(NULL,'IT'),
(NULL,'Staff'),
(NULL,'Administrator');


否则,您可以使用替代的INSERT语法,在其中您仅指定需要手动插入的列:

INSERT INTO Role
(column1,column2,column3) // id column won't be included
VALUES
(value1,value2,value3)

关于php - MySQL中的自动增量主键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16787527/

10-10 17:30
查看更多