0

这是我的 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'

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

4

1 回答 1

3
  1. 主键应该是 INT,而不是 VARCHAR。
  2. 自动增量意味着您不需要自己指定 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)
于 2013-05-28T08:44:12.250 回答