Cách đặt giá trị tăng tự động trong mysql sau khi tạo bảng
Tự động tăng là một tính năng hữu ích được cung cấp bởi MySQL. Nó luôn tạo ra một danh tính duy nhất cho mỗi hàng mới được chèn vào bảng. Nói chung, chúng tôi sử dụng thuộc tính tăng tự động cho trường khóa chính trong bảng. Mỗi lần chúng ta chèn các bản ghi mới vào một bảng, MySQL sẽ tự động tăng giá trị vào cột tăng tự động Show
Ví dụ: chúng tôi có một bảng đã chứa mười hàng. Tiếp theo, nếu chúng ta thêm một hàng mới mà không đưa giá trị vào cột tăng tự động, MySQL sẽ tự động thêm một hàng mới với id=11 Đôi khi, chúng ta cần xóa các hàng này và đặt lại cột tăng tự động để khi chúng ta thực hiện lần chèn tiếp theo vào bảng, danh tính của bản ghi đầu tiên sẽ có giá trị khóa chính là 1 MySQL cho phép nhiều cách khác nhau để đặt lại giá trị cột tăng tự động. Những cách này là
Đầu tiên, chúng ta sẽ tạo một bảng có tên là "Động vật" và gán cột id với thuộc tính tự động tăng. Xem tuyên bố dưới đây Tiếp theo, chúng ta sẽ chèn một số dữ liệu mẫu vào bảng "Động vật" như sau Bây giờ, chúng tôi sẽ thực hiện câu lệnh dưới đây để xác minh thao tác chèn Chúng ta sẽ nhận được đầu ra dưới đây. Trong câu lệnh chèn, chúng tôi chưa chỉ định bất kỳ giá trị nào cho cột tăng tự động. Nhưng chúng ta có thể quan sát thấy ở đầu ra rằng MySQL tự động tạo một số duy nhất theo thứ tự cho trường này Hãy để chúng tôi lấy bảng này để minh họa các phương pháp đặt lại giá trị cột tăng tự động một cách chi tiết Sử dụng câu lệnh ALTER TABLECâu lệnh ALTER TABLE được sử dụng để thay đổi tên của bảng hoặc bất kỳ trường nào của bảng. Nó cũng được sử dụng để thêm, xóa hoặc đặt lại một cột hiện có trong bảng. MySQL cũng cho phép câu lệnh này đặt lại giá trị cột tăng tự động bất cứ khi nào chúng tôi muốn cú pháp Sau đây là cú pháp của câu lệnh ALTER TABLE để đặt lại giá trị cột tự động tăng Trong cú pháp này, trước tiên chúng tôi đã chỉ định tên của bảng sau mệnh đề ALTER TABLE. Tiếp theo, chúng tôi chỉ định giá trị mà chúng tôi muốn đặt lại trong biểu thức là AUTO_INCREMENT = value Cần lưu ý rằng MySQL không cho phép đặt lại giá trị nhỏ hơn hoặc bằng giá trị đã được sử dụng. Ví dụ: nếu chúng tôi đang sử dụng InnoDB, giá trị không được nhỏ hơn hoặc bằng giá trị tối đa hiện tại của cột tăng tự động Đối với MyISAM, nếu giá trị được chỉ định nhỏ hơn hoặc bằng giá trị tối đa của cột auto_increment, thì giá trị đó sẽ được đặt lại về giá trị tối đa hiện tại cộng với một Đối với InnoDB, nếu giá trị được chỉ định nhỏ hơn giá trị tối đa hiện tại của cột auto_increment, MySQL sẽ không phát sinh bất kỳ lỗi nào và trình tự hiện tại cũng không thay đổi Hãy xóa hàng thấp nhất trong bảng với id = 6 như bên dưới Nếu chúng ta thêm một bản ghi mới, MySQL sẽ gán bản ghi này với id = 7. Nhưng nếu chúng ta muốn đặt lại cột này về giá trị cuối cùng, chúng ta có thể sử dụng câu lệnh ALTER TABLE như sau Nếu chúng ta chèn các bản ghi mới vào bảng này, MySQL sẽ bắt đầu tạo id hàng với 6. Thực hiện truy vấn dưới đây Cuối cùng, truy vấn dữ liệu trong bảng để xem hiệu quả. Đầu ra bên dưới giải thích rõ ràng hơn khi chúng ta có sáu hàng với giá trị gia tăng tự động cuối cùng là 6 thay vì 7 Sử dụng câu lệnh TRUNCATE TABLECâu lệnh TRUNCATE TABLE trong MySQL xóa hoàn toàn dữ liệu của bảng mà không xóa cấu trúc của bảng và luôn đặt lại giá trị cột tăng tự động về 0 cú pháp Cú pháp sau minh họa câu lệnh TRUNCATE TABLE để đặt lại giá trị cột tự động tăng Cần lưu ý rằng chúng ta không thể khôi phục dữ liệu đã xóa khỏi bảng sau khi thực hiện câu lệnh TRUNCATE TABLE Sử dụng câu lệnh DROP TABLE và CREATE TABLEChúng ta cũng có thể đặt lại giá trị cột tăng tự động bằng cách sử dụng một cặp câu lệnh DROP TABLE và CREATE TABLE. Phương pháp này xóa vĩnh viễn các bản ghi hoàn chỉnh khỏi bảng Tương tự như truy vấn TRUNCATE TABLE, cặp câu lệnh DROP TABLE và CREATE TABLE trước tiên xóa bảng rồi tạo lại bảng. Do đó, MySQL đặt lại giá trị cột tăng tự động thành 0 CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 cung cấp cơ chế khóa có thể định cấu hình có thể cải thiện đáng kể khả năng mở rộng và hiệu suất của các câu lệnh SQL bổ sung hàng vào bảng có cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2. Để sử dụng cơ chế CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 với bảng CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1, cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 phải được xác định là cột đầu tiên hoặc cột duy nhất của một số chỉ mục sao cho có thể thực hiện tương đương với tra cứu CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;6) được lập chỉ mục trên bảng để có được giá trị cột lớn nhất. Chỉ mục không bắt buộc phải là CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;7 hoặc CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;8, nhưng để tránh các giá trị trùng lặp trong cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2, nên sử dụng các loại chỉ mục đó Phần này mô tả các chế độ khóa CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2, ý nghĩa sử dụng của các cài đặt chế độ khóa CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 khác nhau và cách CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 khởi tạo bộ đếm CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 Chế độ khóa AUTO_INCREMENT của InnoDBPhần này mô tả các chế độ khóa CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 được sử dụng để tạo các giá trị tăng tự động và mỗi chế độ khóa ảnh hưởng đến sao chép như thế nào. Chế độ khóa tăng tự động được định cấu hình khi khởi động bằng biến CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;45 Các thuật ngữ sau được sử dụng để mô tả cài đặt CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;45
Có ba cài đặt khả thi cho biến CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;45. Các cài đặt lần lượt là 0, 1 hoặc 2 cho chế độ khóa “truyền thống”, “liên tiếp” hoặc “xen kẽ”. Kể từ MySQL 8. 0, chế độ khóa xen kẽ ( CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;00) là cài đặt mặc định. Trước MySQL 8. 0, chế độ khóa liên tục là mặc định ( CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;01) Cài đặt mặc định của chế độ khóa xen kẽ trong MySQL 8. 0 phản ánh sự thay đổi từ sao chép dựa trên câu lệnh sang sao chép dựa trên hàng làm loại sao chép mặc định. Sao chép dựa trên câu lệnh yêu cầu chế độ khóa tăng tự động liên tiếp để đảm bảo rằng các giá trị tăng tự động được gán theo thứ tự có thể dự đoán và lặp lại cho một chuỗi câu lệnh SQL nhất định, trong khi sao chép dựa trên hàng không nhạy cảm với thứ tự thực thi của câu lệnh SQL
Hàm ý sử dụng chế độ khóa AUTO_INCREMENT của InnoDB
InnoDB AUTO_INCREMENT Khởi tạo bộ đếmPhần này mô tả cách CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 khởi tạo bộ đếm CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 Nếu bạn chỉ định một cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 cho một bảng CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1, thì đối tượng bảng trong bộ nhớ chứa một bộ đếm đặc biệt được gọi là bộ đếm tăng tự động được sử dụng khi gán giá trị mới cho cột Trong MySQL5. 7 trở về trước, bộ đếm tăng tự động được lưu trữ trong bộ nhớ chính, không phải trên đĩa. Để khởi tạo bộ đếm tăng tự động sau khi khởi động lại máy chủ, CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sẽ thực thi tương đương với câu lệnh sau trong lần chèn đầu tiên vào bảng có chứa cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;0 Trong Mysql 8. 0, hành vi này được thay đổi. Giá trị bộ đếm tăng tự động tối đa hiện tại được ghi vào nhật ký làm lại mỗi khi nó thay đổi và được lưu vào từ điển dữ liệu trên mỗi điểm kiểm tra. Những thay đổi này làm cho giá trị bộ đếm tăng tự động tối đa hiện tại liên tục trong các lần khởi động lại máy chủ Khi khởi động lại máy chủ sau khi tắt bình thường, CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 khởi tạo bộ đếm tăng tự động trong bộ nhớ bằng cách sử dụng giá trị tăng tự động tối đa hiện tại được lưu trữ trong từ điển dữ liệu Khi khởi động lại máy chủ trong quá trình khôi phục sự cố, CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 khởi tạo bộ đếm tăng tự động trong bộ nhớ bằng cách sử dụng giá trị tăng tự động tối đa hiện tại được lưu trữ trong từ điển dữ liệu và quét nhật ký làm lại để tìm các giá trị bộ đếm tăng tự động được ghi từ điểm kiểm tra cuối cùng. Nếu giá trị được ghi lại lớn hơn giá trị bộ đếm trong bộ nhớ, giá trị được ghi lại được áp dụng. Tuy nhiên, trong trường hợp máy chủ thoát không mong muốn, việc sử dụng lại giá trị gia tăng tự động được phân bổ trước đó không thể được đảm bảo. Mỗi lần giá trị tăng tự động tối đa hiện tại bị thay đổi do hoạt động của CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;47 hoặc CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;17, giá trị mới được ghi vào nhật ký làm lại, nhưng nếu thoát không mong muốn xảy ra trước khi nhật ký làm lại được xóa vào đĩa, giá trị được phân bổ trước đó có thể bị thay đổi. Trường hợp duy nhất trong đó CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sử dụng tương đương với câu lệnh CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;50 FOR UPDATE để khởi tạo bộ đếm tăng tự động là khi nhập bảng không có tệp siêu dữ liệu CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;51. Mặt khác, giá trị bộ đếm tăng tự động tối đa hiện tại được đọc từ tệp siêu dữ liệu CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;51 nếu có. Ngoài việc khởi tạo giá trị bộ đếm, tương đương với câu lệnh CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;50 được sử dụng để xác định giá trị bộ đếm tăng tự động tối đa hiện tại của bảng khi cố gắng đặt giá trị bộ đếm thành một giá trị nhỏ hơn hoặc bằng giá trị bộ đếm được duy trì bằng cách sử dụng CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;54 . Ví dụ: bạn có thể thử đặt giá trị bộ đếm thành giá trị nhỏ hơn sau khi xóa một số bản ghi. Trong trường hợp này, bảng phải được tìm kiếm để đảm bảo rằng giá trị bộ đếm mới không nhỏ hơn hoặc bằng giá trị bộ đếm tối đa thực tế hiện tại Trong MySQL5. 7 trở về trước, việc khởi động lại máy chủ sẽ hủy bỏ tác dụng của tùy chọn bảng CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;55, tùy chọn này có thể được sử dụng trong câu lệnh CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;56 hoặc CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;57 để đặt giá trị bộ đếm ban đầu hoặc thay đổi giá trị bộ đếm hiện có, tương ứng. Trong Mysql 8. 0, khởi động lại máy chủ không hủy tác dụng của tùy chọn bảng CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;55. Nếu bạn khởi tạo bộ đếm tăng tự động thành một giá trị cụ thể hoặc nếu bạn thay đổi giá trị bộ đếm tăng tự động thành một giá trị lớn hơn, giá trị mới sẽ được duy trì trong suốt quá trình khởi động lại máy chủ Trong MySQL5. 7 trở về trước, máy chủ khởi động lại ngay sau thao tác CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;59 có thể dẫn đến việc sử dụng lại các giá trị tăng tự động đã được phân bổ trước đó cho giao dịch hoàn nguyên, hoàn nguyên hiệu quả giá trị tăng tự động tối đa hiện tại. Trong Mysql 8. 0, giá trị tăng tự động tối đa hiện tại được duy trì, ngăn việc sử dụng lại các giá trị được phân bổ trước đó Nếu một câu lệnh CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;60 kiểm tra một bảng trước khi bộ đếm tăng tự động được khởi tạo, thì CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sẽ mở bảng và khởi tạo giá trị bộ đếm bằng cách sử dụng giá trị tăng tự động tối đa hiện tại được lưu trữ trong từ điển dữ liệu. Sau đó, giá trị được lưu trữ trong bộ nhớ để sử dụng cho các lần chèn hoặc cập nhật sau này. Việc khởi tạo giá trị bộ đếm sử dụng đọc khóa loại trừ bình thường trên bảng kéo dài đến cuối giao dịch. CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 tuân theo quy trình tương tự khi khởi tạo bộ đếm tăng tự động cho bảng mới tạo có giá trị tăng tự động do người dùng chỉ định lớn hơn 0 Sau khi bộ đếm tăng tự động được khởi tạo, nếu bạn không chỉ định rõ ràng giá trị tăng tự động khi chèn một hàng, thì CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sẽ ngầm tăng bộ đếm và gán giá trị mới cho cột. Nếu bạn chèn một hàng chỉ định rõ ràng giá trị cột tăng tự động và giá trị này lớn hơn giá trị bộ đếm tối đa hiện tại, thì bộ đếm được đặt thành giá trị đã chỉ định CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sử dụng bộ đếm tăng tự động trong bộ nhớ miễn là máy chủ chạy. Khi máy chủ bị dừng và khởi động lại, CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;1 sẽ khởi tạo lại bộ đếm tăng tự động, như đã mô tả trước đó Biến CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;66 xác định điểm bắt đầu cho giá trị cột CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2. Cài đặt mặc định là 1 Biến CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;68 kiểm soát khoảng thời gian giữa các giá trị cột liên tiếp. Cài đặt mặc định là 1 Khi cột số nguyên CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;2 hết giá trị, thao tác CREATE TABLE t1 ( c1 INT(11) NOT NULL AUTO_INCREMENT, c2 VARCHAR(10) DEFAULT NULL, PRIMARY KEY (c1) ) ENGINE=InnoDB;47 tiếp theo sẽ trả về lỗi khóa trùng lặp. Đây là hành vi chung của MySQL Chúng tôi có thể chèn giá trị gia tăng tự động trong MySQL không?Cú pháp cho MySQL
. Theo mặc định, giá trị bắt đầu cho AUTO_INCREMENT là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới. GIÁ TRỊ ('Lars','Monsen'); . 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.
Làm cách nào tôi có thể nhận được số gia tăng tự động tiếp theo trong MySQL?MySQL có từ khóa AUTO_INCREMENT để thực hiện tăng tự động. Giá trị bắt đầu cho AUTO_INCREMENT là 1, là giá trị mặc định. Nó sẽ tăng thêm 1 cho mỗi bản ghi mới. Để lấy id 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 SELECT .
Làm cách nào để kiểm tra giá trị gia tăng tự động trong một bảng?Để biết giá trị auto_increment hiện tại, chúng ta có thể sử dụng hàm last_insert_id() . Đầu tiên, chúng ta sẽ tạo một bảng với sự trợ giúp của lệnh INSERT. Bây giờ, chúng ta sẽ xem có bao nhiêu bản ghi mà tôi đã chèn vào bảng của mình với sự trợ giúp của lệnh SELECT. Do đó, mức tăng tự động cuối cùng là 4.
Làm cách nào để tạo khóa chính tăng tự động trong bảng hiện có trong SQL Server?Nếu bạn đang tìm cách thêm số gia tự động vào bảng hiện có bằng cách thay đổi cột int hiện có thành IDENTITY , SQL Server sẽ chống lại bạn. Bạn sẽ phải. Thêm một cột mới cùng với khóa chính mới được tăng tự động của bạn hoặc. Bỏ cột int cũ của bạn và sau đó thêm IDENTITY mới ngay sau đó. |