簡體   English   中英

MySQL中的自動增量主鍵

[英]autoincrement primary key in mysql

這是我在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'

不知道為什么我得到這個錯誤

  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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM