Hướng dẫn mysql auto-increment by more than 1 - mysql tự động tăng hơn 1

Tôi có một bảng với cấu trúc sau:

 id |  number |  text
----------------------
  1 |    1    |  test

Trong đó, ID là khóa chính của tôi với giá trị gia tăng tự động. Tôi cũng muốn làm số làm giá trị gia tăng tự động. Có thể có nhiều cột tăng tự động trong một bảng không?id is my primary key with auto increment value. I want to make number as auto increment value too. Is it possible to have more than one auto increment column in one table?

Hướng dẫn mysql auto-increment by more than 1 - mysql tự động tăng hơn 1

Hari Harker

6821 Huy hiệu vàng12 Huy hiệu bạc29 Huy hiệu đồng1 gold badge12 silver badges29 bronze badges

Hỏi ngày 30 tháng 11 năm 2012 lúc 10:03Nov 30, 2012 at 10:03

2

Không thể. Có thể chỉ có một cột tự động và nó phải được định nghĩa là một khóa trong MySQL. Nhưng bạn có thể làm điều đó bằng cách sử dụng

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
0 để biết chi tiết về liên kết này tạo trình kích hoạt

Đã trả lời ngày 30 tháng 11 năm 2012 lúc 10:15Nov 30, 2012 at 10:15

Hướng dẫn mysql auto-increment by more than 1 - mysql tự động tăng hơn 1

TorettotorettoToretto

4.7215 huy hiệu vàng26 Huy hiệu bạc46 Huy hiệu đồng5 gold badges26 silver badges46 bronze badges

2

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end

Đã trả lời ngày 30 tháng 11 năm 2012 lúc 10:11Nov 30, 2012 at 10:11

Phoniqphoniqphoniq

2281 Huy hiệu bạc5 Huy hiệu đồng1 silver badge5 bronze badges

Thuộc tính

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 có thể được sử dụng để tạo danh tính duy nhất cho các hàng mới:

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;

Trở lại nào:

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

Không có giá trị nào được chỉ định cho cột

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1, vì vậy các số chuỗi được chỉ định của MySQL. Bạn cũng có thể gán 0 một cách rõ ràng cho cột để tạo các số chuỗi, trừ khi chế độ
create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
3 SQL được bật. Ví dụ:

INSERT INTO animals (id,name) VALUES(0,'groundhog');

Nếu cột được khai báo

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
4, cũng có thể gán
create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
5 cho cột để tạo số chuỗi. Ví dụ:

INSERT INTO animals (id,name) VALUES(NULL,'squirrel');

Khi bạn chèn bất kỳ giá trị nào khác vào cột

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1, cột được đặt thành giá trị đó và chuỗi được đặt lại để giá trị được tạo tự động tiếp theo theo tuần tự từ giá trị cột lớn nhất. Ví dụ:

INSERT INTO animals (id,name) VALUES(100,'rabbit');
INSERT INTO animals (id,name) VALUES(NULL,'mouse');
SELECT * FROM animals;
+-----+-----------+
| id  | name      |
+-----+-----------+
|   1 | dog       |
|   2 | cat       |
|   3 | penguin   |
|   4 | lax       |
|   5 | whale     |
|   6 | ostrich   |
|   7 | groundhog |
|   8 | squirrel  |
| 100 | rabbit    |
| 101 | mouse     |
+-----+-----------+

Cập nhật giá trị cột ____11 hiện có trong bảng

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
8 không đặt lại chuỗi
create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 như đối với các bảng
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
0 và
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
1.

Bạn có thể truy xuất giá trị

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 được tạo tự động gần đây nhất với hàm
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
3 SQL hoặc hàm API
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
4 C. Các chức năng này là đặc trưng cho kết nối, vì vậy các giá trị trả về của chúng không bị ảnh hưởng bởi một kết nối khác cũng đang thực hiện các phần chèn.

Sử dụng kiểu dữ liệu số nguyên nhỏ nhất cho cột

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 đủ lớn để giữ giá trị chuỗi tối đa bạn cần. Khi cột đạt đến giới hạn trên của kiểu dữ liệu, lần thử tiếp theo để tạo số thứ tự không thành công. Sử dụng thuộc tính
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
6 nếu có thể cho phép một phạm vi lớn hơn. Ví dụ: nếu bạn sử dụng
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
7, số chuỗi tối đa cho phép là 127. Đối với
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
8, tối đa là 255. Xem các loại số nguyên (giá trị chính xác) - Số nguyên, int, Smallint, Tinyint, Mediumint, Bigint cho phạm vi của tất cả các số nguyên loại.

Ghi chú

Để chèn nhiều hàng,

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
3 và
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;
4 thực sự trả lại phím
create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 từ hàng đầu tiên của các hàng được chèn. Điều này cho phép chèn nhiều hàng được sao chép chính xác trên các máy chủ khác trong thiết lập sao chép.first of the inserted rows. This enables multiple-row inserts to be reproduced correctly on other servers in a replication setup.

Để bắt đầu với giá trị

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 khác ngoài 1, hãy đặt giá trị đó bằng
+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+
3 hoặc
+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+
4, như thế này:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

Ghi chú Myisam

  • Đối với các bảng

    CREATE TABLE animals (
         id MEDIUMINT NOT NULL AUTO_INCREMENT,
         name CHAR(30) NOT NULL,
         PRIMARY KEY (id)
    );
    INSERT INTO animals (name) VALUES
        ('dog'),('cat'),('penguin'),
        ('lax'),('whale'),('ostrich');
    SELECT * FROM animals;
    0, bạn có thể chỉ định
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 trên cột thứ cấp trong chỉ mục nhiều cột. Trong trường hợp này, giá trị được tạo cho cột
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 được tính là
    +----+---------+
    | id | name    |
    +----+---------+
    |  1 | dog     |
    |  2 | cat     |
    |  3 | penguin |
    |  4 | lax     |
    |  5 | whale   |
    |  6 | ostrich |
    +----+---------+
    8) + 1 trong đó tiền tố = ________ 39. Điều này rất hữu ích khi bạn muốn đặt dữ liệu vào các nhóm được đặt hàng.

    CREATE TABLE animals (
        grp ENUM('fish','mammal','bird') NOT NULL,
        id MEDIUMINT NOT NULL AUTO_INCREMENT,
        name CHAR(30) NOT NULL,
        PRIMARY KEY (grp,id)
    ) ENGINE=MyISAM;
    INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');
    SELECT * FROM animals ORDER BY grp,id;

    Trở lại nào:

    +--------+----+---------+
    | grp    | id | name    |
    +--------+----+---------+
    | fish   |  1 | lax     |
    | mammal |  1 | dog     |
    | mammal |  2 | cat     |
    | mammal |  3 | whale   |
    | bird   |  1 | penguin |
    | bird   |  2 | ostrich |
    +--------+----+---------+

    Không có giá trị nào được chỉ định cho cột

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1, vì vậy các số chuỗi được chỉ định của MySQL. Bạn cũng có thể gán 0 một cách rõ ràng cho cột để tạo các số chuỗi, trừ khi chế độ
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    3 SQL được bật. Ví dụ:

  • Nếu cột

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 là một phần của nhiều chỉ mục, MySQL sẽ tạo các giá trị chuỗi bằng cách sử dụng chỉ mục bắt đầu với cột
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1, nếu có. Ví dụ: nếu bảng
    INSERT INTO animals (id,name) VALUES(0,'groundhog');
    7 chứa các chỉ mục
    INSERT INTO animals (id,name) VALUES(0,'groundhog');
    8 và
    INSERT INTO animals (id,name) VALUES(0,'groundhog');
    9, MySQL sẽ bỏ qua
    INSERT INTO animals (id,name) VALUES(NULL,'squirrel');
    0 để tạo các giá trị chuỗi. Do đó, bảng sẽ chứa một chuỗi duy nhất, không phải là một chuỗi trên mỗi giá trị
    INSERT INTO animals (id,name) VALUES(NULL,'squirrel');
    1.

Đọc thêm

Thông tin thêm về

create trigger nameTrigger before insert on tables
for each row
begin
  DECLARE newNumber unsigned default 0;
  SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
  UPDATE myTable SET number = newNumber WHERE id = new.id;
end
1 có sẵn tại đây:

  • Cách gán thuộc tính

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 cho một cột: Tạo câu lệnh bảng và câu lệnh ALTER BẢNG.

  • Cách

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 hoạt động tùy thuộc vào chế độ
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    3 SQL: Chế độ SQL máy chủ.

  • Cách sử dụng hàm

    CREATE TABLE animals (
         id MEDIUMINT NOT NULL AUTO_INCREMENT,
         name CHAR(30) NOT NULL,
         PRIMARY KEY (id)
    );
    INSERT INTO animals (name) VALUES
        ('dog'),('cat'),('penguin'),
        ('lax'),('whale'),('ostrich');
    SELECT * FROM animals;
    3 để tìm hàng chứa giá trị
    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 gần đây nhất: các chức năng thông tin.

  • Đặt giá trị

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 sẽ được sử dụng: các biến hệ thống máy chủ.

  • Xử lý Auto_increment trong Innodb

  • create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 và sao chép: sao chép và tự động_increment.

  • Các biến hệ thống máy chủ liên quan đến

    create trigger nameTrigger before insert on tables
    for each row
    begin
      DECLARE newNumber unsigned default 0;
      SELECT Max(number)+1 INTO newNumber FROM myTable WHERE id = new.id;
      UPDATE myTable SET number = newNumber WHERE id = new.id;
    end
    
    1 (
    INSERT INTO animals (id,name) VALUES(100,'rabbit');
    INSERT INTO animals (id,name) VALUES(NULL,'mouse');
    SELECT * FROM animals;
    +-----+-----------+
    | id  | name      |
    +-----+-----------+
    |   1 | dog       |
    |   2 | cat       |
    |   3 | penguin   |
    |   4 | lax       |
    |   5 | whale     |
    |   6 | ostrich   |
    |   7 | groundhog |
    |   8 | squirrel  |
    | 100 | rabbit    |
    | 101 | mouse     |
    +-----+-----------+
    1 và
    INSERT INTO animals (id,name) VALUES(100,'rabbit');
    INSERT INTO animals (id,name) VALUES(NULL,'mouse');
    SELECT * FROM animals;
    +-----+-----------+
    | id  | name      |
    +-----+-----------+
    |   1 | dog       |
    |   2 | cat       |
    |   3 | penguin   |
    |   4 | lax       |
    |   5 | whale     |
    |   6 | ostrich   |
    |   7 | groundhog |
    |   8 | squirrel  |
    | 100 | rabbit    |
    | 101 | mouse     |
    +-----+-----------+
    2) có thể được sử dụng để sao chép: các biến hệ thống máy chủ.

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

Máy chủ MySQL đã cung cấp hai biến tăng tự động: Auto_increment_increment và Auto_increment_offset, có thể được sử dụng để tạo các giá trị tăng tự động khác nhau trên mỗi thành viên.: auto_increment_increment and auto_increment_offset, which can be used to generate different auto increment values on each member.

Làm thế 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.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.use the function last_insert_id() from MySQL or auto_increment with SELECT.

Tại sao tăng tự động tăng nhiều hơn số lượng hàng được chèn?

Nó có thể có nhiều nguyên nhân: Kiểm tra xem giá trị Auto_increment trên bảng, có giá trị cao nhất tiếp theo.Hãy nhớ rằng nếu bạn có các giao dịch trong đó bạn chèn một hàng và cuộn lại giao dịch, giá trị auto_increment sẽ biến mất/bỏ qua.Check if the auto_increment value on the table itself, has the next highest value. Mind that if you have transactions where you INSERT a row and rollback the transaction, that auto_increment value will be gone/skipped.

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.