Làm cách nào để đặt giá trị ban đầu và tăng tự động trong MySQL?


288

Làm cách nào để đặt giá trị ban đầu cho cột "id" trong bảng MySQL bắt đầu từ 1001?

Tôi muốn chèn "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Không chỉ định giá trị ban đầu cho cột id.

Câu trả lời:


516

Dùng cái này:

ALTER TABLE users AUTO_INCREMENT=1001;

hoặc nếu bạn chưa thêm cột id, hãy thêm nó vào cột

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

2
Tôi nhận ra điều này đã 7 năm trước, nhưng ... Tôi có thể nhận được lời giải thích về các phần của câu trả lời này không? Làm gì ADD INDEXở đây? Tôi có phải thêm nó trong cùng một câu lệnh với idcột không, hoặc tôi có thể xác định idcột trong CREATE TABLEkhối ADD INDEX(id)không?
Michael Hoffmann

2
Heh, thời gian trôi qua ... Chắc chắn, hãy xác định nó trong CREATE TABLE nếu bạn có thể làm điều đó. Phần "ALTER TABLE" thứ hai của câu trả lời ngụ ý rằng bạn đã tạo một bảng và nó có thể đã được triển khai ở đâu đó mà không có chỉ mục thích hợp, điều bắt buộc để "ALTER TABLE" đầu tiên hoạt động như dự định. Tôi hy vọng giải thích này sẽ giúp.
Anatoliy

Vâng, điều đó có ích. Tôi đã xem xét một số mẫu sử dụng các tuyên bố này theo cách tương tự, và chúng có ý nghĩa hơn bây giờ. Cảm ơn bạn.
Michael Hoffmann

1
Lý do cho ADD INDEX là vì không có nó, nếu bạn đã có khóa chính trên một bảng hiện có, bạn sẽ nhận được there can be only one auto column and it must be defined as a key. Bạn cần chỉ mục để nó sẽ là khóa MUL.
djsumdog

Tôi đã thử điều này trên một bảng vừa được tạo mà không có bất kỳ hàng nào được thêm vào. Có vẻ như điều này không hoạt động trừ khi đã có ít nhất 1 hàng được thêm vào bảng trước.
Solomon Closson

54

MySQL - Thiết lập khóa chính tăng tự động bắt đầu từ 1001:

Bước 1, tạo bảng của bạn:

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

Bước 2, đặt số bắt đầu cho khóa chính tăng tự động:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Bước 3, chèn một số hàng:

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.");

Bước 4, giải thích đầu ra:

select * from penguins

in:

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

1
Tôi nên làm thế nào nếu tôi muốn đặt id <1000 cho chim cánh cụt đặc biệt?
William Hu

1
Bạn có thể chèn bất kỳ id miễn phí nào, chỉ cần đặt nó vào danh sách cột: insert into penguins (my_id, skipper) values(999, "explicit id");(khi sử dụng 0thay vì 999giá trị tăng tự động sẽ được chèn)
hellcode

32

Bàn làm việc MySQL

Nếu bạn muốn tránh viết sql, bạn cũng có thể làm điều đó trong MySQL Workbench bằng cách nhấp chuột phải vào bảng, chọn "Alter Table ..." trong menu.

Khi chế độ xem cấu trúc bảng mở ra, hãy chuyển đến tab "Tùy chọn" (ở dưới cùng của chế độ xem) và đặt trường "Tự động tăng" thành giá trị của số tự động tiếp theo.

Đừng quên nhấn "Áp dụng" khi bạn hoàn tất mọi thay đổi.

PhpMyAdmin:

Nếu bạn đang sử dụng phpMyAdmin, bạn có thể nhấp vào bảng trong điều hướng bên trái, đi tới tab "Hoạt động" và bên dưới Tùy chọn bảng thay đổi giá trị AUTO_INCREMENT và nhấp OK.


1
Bạn đang nói về phpMyAdmin?
Pacerier 3/2/2015

1
Không, tôi nghĩ rằng anh ấy đang nói về MySQL Workbench.
Sao Thổ

@Saturnian, vâng, bạn đúng, ý tôi là Bàn làm việc. Tôi sẽ chỉnh sửa bài viết của tôi để làm rõ điều đó.
Bojan Hrnkas

phpMyAdmin đã giải quyết vấn đề tự động trong một bước, tôi đã thử đi theo lộ trình mã và nó không hoạt động.
tekagami

11

Trước tiên, bạn cần thêm cột để tăng tự động

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

Truy vấn này để thêm cột lúc đầu. Bây giờ bạn phải thiết lập lại giá trị ban đầu tăng tự động. Vì vậy, sử dụng truy vấn này

alter table users AUTO_INCREMENT=1001

Bây giờ bảng của bạn bắt đầu với 1001



5

Ngoài ra, trong PHPMyAdmin , bạn có thể chọn bảng từ bên trái (danh sách các bảng) sau đó thực hiện việc này bằng cách đến đó.
Tab hoạt động-> Tùy chọn bảng-> AUTO_INCREMENT.

Bây giờ, Đặt giá trị của bạn và sau đó nhấn Go bên dưới Tùy chọn bảng Bo x.


4

Đối với điều này, bạn phải đặt AUTO_INCREMENTgiá trị

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Thí dụ

ALTER TABLE tablename AUTO_INCREMENT = 101

3

Ngoài ra, nếu bạn quá lười để viết truy vấn SQL. Sau đó, giải pháp này là dành cho bạn. nhập mô tả hình ảnh ở đây

  1. Mở phpMyAdmin
  2. Chọn bảng mong muốn
  3. Nhấp vào tab Hoạt động
  4. Đặt Giá trị ban đầu mong muốn của bạn cho AUTO_INCREMENT
  5. Làm xong..!
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.