Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?

Tôi đã tìm thấy câu hỏi này, nhưng câu trả lời tôi thực sự đang tìm kiếm hoàn thành hai tiêu chí:

  1. sử dụng các truy vấn hoàn toàn MySQL
  2. Đặt lại một bảng tự động hiện có vào tối đa (id) + 1

Vì tôi không thể tìm thấy chính xác những gì tôi muốn ở đây, tôi đã phân tán câu trả lời từ nhiều câu trả lời khác nhau và chia sẻ nó ở đây.

Một vài điều cần lưu ý:

  1. bảng trong câu hỏi là innodb
  2. Bảng sử dụng trường
    call reset_autoincrement('products');
    
    4 với loại là
    call reset_autoincrement('products');
    
    5 làm khóa chính
  3. Cách duy nhất để làm điều này hoàn toàn trong MySQL là sử dụng thủ tục được lưu trữ
  4. Hình ảnh của tôi dưới đây đang sử dụng phần tiếp theo làm GUI. Bạn sẽ có thể điều chỉnh nó dựa trên trình soạn thảo MySQL ưa thích của bạn
  5. Tôi đã thử nghiệm điều này trên MySQL Ver 14.14 Distrib 5.5.61, cho Debian-Linux-GNUVer 14.14 Distrib 5.5.61, for debian-linux-gnu

Bước 1: Tạo quy trình lưu trữ

Tạo một quy trình được lưu trữ như thế này:

DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN

      SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
      PREPARE stmt FROM @get_next_inc;
      EXECUTE stmt;
      SELECT @next_inc AS result;
      DEALLOCATE PREPARE stmt;

      set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
      PREPARE stmt FROM @alter_statement;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

Sau đó chạy nó.

Trước khi chạy, có vẻ như thế này khi bạn nhìn vào các quy trình được lưu trữ trong cơ sở dữ liệu của mình.

Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?

Khi tôi chạy, tôi chỉ cần chọn quy trình được lưu trữ và nhấn Lựa chọn chạy

Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?

Lưu ý: Phần Delimit là rất quan trọng. Do đó, nếu bạn sao chép và dán từ câu trả lời được chọn trên cùng trong câu hỏi này, họ có xu hướng không làm việc vì lý do này.

Sau khi chạy, tôi sẽ thấy thủ tục được lưu trữ

Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?

Nếu bạn cần thay đổi quy trình được lưu trữ, bạn cần xóa quy trình được lưu trữ, sau đó chọn để chạy lại.

Bước 2: Gọi thủ tục được lưu trữ

Lần này bạn có thể chỉ cần sử dụng các truy vấn MySQL bình thường.

call reset_autoincrement('products');

Xuất thân từ các ghi chú truy vấn SQL của riêng tôi trong https://simkimsia.com/reset-mysql-eatoincrement-to-max-id-plus-1/ và được điều chỉnh cho stack & nbsp; tràn.

Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?


Hướng dẫn MySQL này giải thích cách đặt lại các chuỗi bằng cách sử dụng thuộc tính auto_increment trong MySQL với cú pháp và ví dụ.reset sequences using the AUTO_INCREMENT attribute in MySQL with syntax and examples.

Sự mô tả

Bạn có thể đặt lại giá trị tiếp theo được gán bởi auto_increment bất cứ lúc nào bằng cách sử dụng câu lệnh ALTER BẢNG trong MySQL.

Cú pháp

Trong MySQL, cú pháp để đặt lại cột Auto_increment bằng cách sử dụng câu lệnh ALTER BẢNG là:

ALTER TABLE table_name AUTO_INCREMENT = value;
Table_namethe Tên của bảng có cột tự động_increment bạn muốn đặt lại .Valuethe Giá trị tiếp theo sẽ được sử dụng trong cột Auto_increment.

Thí dụ

Chúng ta hãy xem một ví dụ về cách đặt lại giá trị tiếp theo được gán cho cột tự động_increment trong một bảng trong MySQL.

Ví dụ: nếu chúng tôi có một bảng nhà cung cấp được xác định như sau:

CREATE TABLE suppliers
( supplier_id INT(11) NOT NULL AUTO_INCREMENT,
  supplier_name VARCHAR(50) NOT NULL,
  account_rep VARCHAR(30) NOT NULL DEFAULT 'TBD',
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

Chúng tôi có thể đặt lại giá trị tiếp theo trong chuỗi cho trường Nhà cung cấp_id (là trường tự động_increment trong bảng nhà cung cấp) với câu lệnh ALTER BẢNG sau:

ALTER TABLE suppliers AUTO_INCREMENT = 1;

Ví dụ này sẽ thay đổi giá trị tiếp theo trong trường Tự động_increment (tức là: Giá trị tiếp theo trong chuỗi) thành 1 cho cột Nhà cung cấp_id trong bảng Nhà cung cấp. Bây giờ khi một bản ghi mới được chèn vào bảng Nhà cung cấp, cột Nhà cung cấp_id sẽ được gán giá trị 1 trong bản ghi mới được tạo.

Mẹo: Vì chỉ có thể có một trường tự động_increment trong bảng, bạn chỉ cần chỉ định tên bảng (chứ không phải tên trường) trong câu lệnh ALTER BẢNG khi đặt lại giá trị tiếp theo trong chuỗi. Because there can only be one AUTO_INCREMENT field in a table, you only need to specify the table name (and not the field name) in the ALTER TABLE statement when resetting the next value in the sequence.


Auto_increment là một thuộc tính mặc định tự động tăng bản ghi mới được thêm vào 1. Số bắt đầu có thể được thay đổi với sự trợ giúp của lệnh thay đổi.

Đầu tiên, một bảng được tạo với sự trợ giúp của lệnh chèn. Điều này được đưa ra như sau -

mysql> CREATE table AutoIncrementTable
-> (
-> id int auto_increment,
-> name varchar(200),
-> Primary key(id)
-> );
Query OK, 0 rows affected (0.70 sec)

Sau khi tạo bảng, các bản ghi được chèn vào bảng với sự trợ giúp của lệnh chèn này được đưa ra như sau -

mysql> INSERT into AutoIncrementTable(name) values('Carol');
Query OK, 1 row affected (0.19 sec)

mysql> INSERT into AutoIncrementTable(name) values('Bob');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into AutoIncrementTable(name) values('John');
Query OK, 1 row affected (0.18 sec)

Bây giờ, các bản ghi trong bảng có thể được nhìn thấy với sự trợ giúp của lệnh Chọn. Điều này được đưa ra như sau -

mysql> SELECT * from AutoIncrementTable;

Đầu ra thu được từ truy vấn trên được đưa ra dưới đây -

+----+-------+
| id | name  |
+----+-------+
| 1  | Carol |
| 2  | Bob   |
| 3  | John  |
+----+-------+
3 rows in set (0.00 sec)

Bây giờ, ba bản ghi đã được chèn vào bảng và ID được tăng thêm 1 lần mỗi lần. Bây giờ mức tăng tự động được thay đổi để ID của bản ghi tiếp theo bắt đầu từ 1000.

Cú pháp để thay đổi Auto_increment được đưa ra như sau.

alter table yourTableName auto_increment=startingNumber;

Cú pháp trên được sử dụng để thay đổi Auto_increment bằng 1000. Điều này được hiển thị bên dưới -

call reset_autoincrement('products');
0

Sau khi thay đổi thành công tự động_increment, nhiều recors được đưa vào bảng. Điều này được hiển thị bên dưới -

call reset_autoincrement('products');
1

Bây giờ, các bản ghi bảng được xem bằng cách sử dụng câu lệnh select. Có thể thấy rằng số bản ghi thứ 4 bắt đầu từ 1000.

mysql> SELECT * from AutoIncrementTable;

Sau đây là đầu ra

call reset_autoincrement('products');
3

Hướng dẫn can we change auto increment value in mysql? - chúng ta có thể thay đổi giá trị tăng tự động trong mysql không?

Cập nhật vào ngày 24 tháng 6 năm 2020 14:02:23

  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để thay đổi số tăng tự động ở đầu trong MySQL?
  • Thay đổi bộ đếm gia tăng tự động trong MySQL?
  • Chuyển null cho mysql để tăng tự động?
  • Làm thế nào để làm cho bảng chính của bảng mysql tăng tự động tăng lên?
  • Làm thế nào để có được ID tăng tự động tiếp theo trong MySQL?
  • Làm thế nào để đặt giá trị ban đầu và tăng tự động trong mysql?
  • Hiển thị số trình tự ID người dùng tăng tự động để bắt đầu từ 001 trong MySQL?
  • Đặt Tăng tự động tùy chỉnh với Zerofill trong MySQL
  • Làm thế nào để xử lý phân mảnh cột ID tăng tự động trong MySQL?
  • Làm thế nào để thêm tự động-increment vào cột trong cơ sở dữ liệu MySQL bằng PHPMyAdmin?
  • Làm thế nào để tự động giá trị giá trị của các bảng để thấp hơn trong MySQL?
  • Truy vấn MySQL để đặt cột tăng tự động (ID) của tôi thành 0 hoặc đặt lại giá trị của trường gia tăng tự động?
  • Làm thế nào để tạo một bảng với cột tự động trong MySQL bằng JDBC?
  • Hai cột làm khóa chính với tự động trong MySQL?
  • Làm cách nào để bắt đầu tăng tự động từ một điểm cụ thể trong MySQL?

Chúng ta có thể có 2 lần tăng tự động trong MySQL không?

Bạn không thể có hai cột tự động..

Làm cách nào để thay đổi Autoindex tiếp theo trong MySQL?

MySQL có từ khóa Auto_increment để thực hiện tự động. Giá trị bắt đầu cho auto_increment là 1, là mặc định. Nó sẽ được tăng thêm 1 cho mỗi bản ghi mới. Để nhận ID gia tăng tự động tiếp theo trong MySQL, chúng ta có thể sử dụng hàm last_insert_id () từ mysql hoặc auto_increment với Chọn.

Chúng ta có thể chèn giá trị gia tăng tự động trong MySQL không?

Cú pháp cho MySQL MySQL sử dụng từ khóa Auto_increment để thực hiện tính năng tự động.Theo mặc định, giá trị bắt đầu cho Auto_increment là 1 và nó sẽ tăng thêm 1 cho mỗi bản ghi mới.Các giá trị ('Lars', 'Monsen');Câu lệnh SQL ở trên sẽ chèn một bản ghi mới vào bảng "người".MySQL uses the AUTO_INCREMENT keyword to perform an auto-increment feature. By default, the starting value for AUTO_INCREMENT is 1, and it will increment by 1 for each new record. VALUES ('Lars','Monsen'); The SQL statement above would insert a new record into the "Persons" table.

Điều gì xảy ra nếu gia tăng tự động MySQL đạt đến giới hạn?

Khi cột Auto_increment đạt đến giới hạn trên của kiểu dữ liệu thì nỗ lực tiếp theo để tạo số chuỗi không thành công.Đó là lý do tại sao nó được khuyên nên sử dụng một loại dữ liệu số nguyên đủ lớn cho cột Auto_increment để giữ giá trị chuỗi tối đa theo yêu cầu của chúng tôi.the subsequent effort to generate the sequence number fails. That is why it is advised to use a large enough integer data type for the AUTO_INCREMENT column to hold the maximum sequence value required by us.