这是我在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/