วิธีการตั้งค่าเริ่มต้นและการเพิ่มอัตโนมัติใน MySQL?


288

ฉันจะตั้งค่าเริ่มต้นสำหรับคอลัมน์ "id" ในตาราง MySQL ที่เริ่มจาก 1001 ได้อย่างไร

ฉันต้องการแทรก "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

โดยไม่ระบุค่าเริ่มต้นสำหรับคอลัมน์ id

คำตอบ:


518

ใช้สิ่งนี้:

ALTER TABLE users AUTO_INCREMENT=1001;

หรือถ้าคุณยังไม่ได้เพิ่มคอลัมน์ id ให้เพิ่มเข้าไปด้วย

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
ฉันรู้ว่าสิ่งนี้เกิดขึ้นเมื่อ 7 ปีที่แล้ว แต่ ... ฉันจะขอคำอธิบายเกี่ยวกับส่วนต่าง ๆ ของคำตอบได้หรือไม่? ที่ADD INDEXนี่ทำอะไร ฉันต้องเพิ่มมันในคำสั่งเดียวกับidคอลัมน์หรือฉันสามารถกำหนดidคอลัมน์ในCREATE TABLEบล็อกแล้วADD INDEX(id)?
Michael Hoffmann

2
เฮ้เวลาผ่านไป ... ได้แน่นอนกำหนดไว้ใน CREATE TABLE ถ้าคุณสามารถทำได้ ส่วนของคำตอบ "ALTER TABLE" ที่สองหมายความว่าคุณได้สร้างตารางแล้วและอาจถูกนำไปใช้ที่ใดที่หนึ่งโดยไม่มีดัชนีที่เหมาะสมซึ่งจำเป็นสำหรับ "ALTER TABLE" ครั้งแรกเพื่อทำงานตามที่ตั้งใจไว้ ฉันหวังว่าคำอธิบายนี้จะช่วยได้
Anatoliy

ใช่มันช่วยได้ ฉันกำลังดูตัวอย่างบางส่วนที่ใช้ข้อความเหล่านี้ในลักษณะที่คล้ายกัน ขอบคุณ.
Michael Hoffmann

1
เหตุผลสำหรับ INDEX there can be only one auto column and it must be defined as a keyเพิ่มเป็นเพราะไม่ได้ถ้าคุณมีคีย์หลักในตารางที่มีอยู่คุณจะได้รับ คุณต้องการดัชนีดังนั้นมันจะเป็นคีย์ MUL
djsumdog

ฉันลองสิ่งนี้บนโต๊ะที่เพิ่งสร้างขึ้นโดยไม่เพิ่มแถวใดเลย ดูเหมือนว่าสิ่งนี้จะไม่ทำงานจนกว่าจะมีการเพิ่ม atleast 1 แถวลงในตารางก่อน
โซโลมอน Closson

54

MySQL - ตั้งค่าคีย์หลักที่เพิ่มขึ้นโดยอัตโนมัติซึ่งเริ่มต้นที่ 1001:

ขั้นตอนที่ 1 สร้างตารางของคุณ:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

ขั้นตอนที่ 2 ตั้งค่าหมายเลขเริ่มต้นสำหรับคีย์หลักที่เพิ่มขึ้นอัตโนมัติ:

ALTER TABLE penguins AUTO_INCREMENT=1001;

ขั้นตอนที่ 3 แทรกแถว:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

ขั้นตอนที่ 4 ตีความผลลัพธ์:

select * from penguins

พิมพ์:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
ฉันควรทำอย่างไรหากฉันต้องการตั้งค่า id <1000 สำหรับเพนกวินพิเศษ
William Hu

1
คุณสามารถใส่รหัสฟรีใด ๆ เพียงใส่ไว้ในรายการคอลัมน์: insert into penguins (my_id, skipper) values(999, "explicit id");(เมื่อใช้0แทน999การเพิ่มค่าอัตโนมัติจะถูกแทรก)
hellcode

32

ปรับแต่ง MySQL

หากคุณต้องการหลีกเลี่ยงการเขียน sql คุณสามารถทำได้ใน MySQL Workbench โดยคลิกขวาบนโต๊ะเลือก "Alter Table ... " ในเมนู

เมื่อมุมมองโครงสร้างตารางเปิดขึ้นให้ไปที่แท็บ "ตัวเลือก" (ที่ด้านล่างล่างของมุมมอง) และตั้งค่าฟิลด์ "การเพิ่มขึ้นอัตโนมัติ" เป็นค่าของหมายเลขการสร้างอัตโนมัติถัดไป

อย่าลืมกด "นำไปใช้" เมื่อคุณทำการเปลี่ยนแปลงทั้งหมดเสร็จแล้ว

phpMyAdmin คือ

หากคุณใช้ phpMyAdmin คุณสามารถคลิกที่ตารางในการนำทางซ้ายไปที่แท็บ "การดำเนินการ" และภายใต้ตัวเลือกตารางให้เปลี่ยนค่า AUTO_INCREMENT และคลิกตกลง


1
คุณกำลังพูดถึง phpMyAdmin?
Pacerier

1
ไม่ฉันคิดว่าเขากำลังพูดถึง MySQL Workbench
เสาร์

@Saturnian ใช่คุณพูดถูกฉันหมายถึงโต๊ะทำงาน ฉันจะแก้ไขโพสต์ของฉันเพื่อชี้แจงว่า
Bojan Hrnkas

phpMyAdmin แก้ไขปัญหา autoincrement ในขั้นตอนเดียวฉันลองใช้เส้นทางของรหัสและมันไม่ทำงาน
tekagami

11

ก่อนอื่นคุณต้องเพิ่มคอลัมน์เพื่อเพิ่มอัตโนมัติ

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

แบบสอบถามนี้เพื่อเพิ่มคอลัมน์ในตอนแรก ตอนนี้คุณต้องรีเซ็ตค่าเริ่มต้นการเพิ่มอัตโนมัติ ดังนั้นใช้แบบสอบถามนี้

alter table users AUTO_INCREMENT=1001

ตอนนี้ตารางของคุณเริ่มต้นด้วย 1,001



5

นอกจากนี้ในPHPMyAdminคุณสามารถเลือกตารางจากด้านซ้าย (รายการตาราง) จากนั้นไปที่นั่น
แท็บการดำเนินงาน -> ตัวเลือกตาราง -> AUTO_INCREMENT

ตอนนี้ตั้งค่าของคุณแล้วกดไปภายใต้ตัวเลือกตาราง Bo x


4

สำหรับสิ่งนี้คุณต้องตั้งAUTO_INCREMENTค่า

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

ตัวอย่าง

ALTER TABLE tablename AUTO_INCREMENT = 101

3

หรือถ้าคุณขี้เกียจเกินกว่าจะเขียนแบบสอบถาม SQL จากนั้นโซลูชันนี้เหมาะสำหรับคุณ ป้อนคำอธิบายรูปภาพที่นี่

  1. เปิดphpMyAdmin
  2. เลือกตารางที่ต้องการ
  3. คลิกที่แท็บปฏิบัติการ
  4. ตั้งค่าเริ่มต้นที่คุณต้องการสำหรับAUTO_INCREMENT
  5. เสร็จสิ้น .. !
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.