在mysql中自动增加主键

时间:2013-05-28 08:38:25

标签: php mysql database

这是我的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: Record could not be added
Duplicate entry 'R0' for key 'PRIMARY'

不确定我为什么会收到此错误

1 个答案:

答案 0 :(得分:3)

  1. 主键应该是INT,而不是VARCHAR。
  2. 自动增量意味着您不自己指定ID(因此,自动),它是MYSQL的固有功能,您在创建表结构时应该使用它。
  3. 您收到重复错误,因为您多次运行插入查询,因此尝试输入重复ID,这是由PRIMARY KEY的性质禁止的 - 这是一个唯一标识符。

    相反,您只需将值保留为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)