Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo hai cột tăng tự động trong MySQL?

Không hiểu tại sao bạn cần hai cột tự động tăng giá trị, không có ý nghĩa gì ... nhưng nếu bạn nhấn mạnh -
Bạn có thể thực hiện điều đó trong UDF hoặc SP theo cách này, bạn có nhiều cột tự động tăng một giá trị.

VÍ DỤ # 1:QUY TRÌNH LƯU TRỮ (SP)


Bảng

CREATE TABLE tests (
    test_id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    test_num INT(10) NULL,
    test_name VARCHAR(10) NOT NULL
);



Quy trình được lưu trữ

DELIMITER $$
CREATE PROCEDURE autoInc (name VARCHAR(10))
    BEGIN
        DECLARE getCount INT(10);

        SET getCount = (
            SELECT COUNT(test_num)
            FROM tests) + 1;

        INSERT INTO tests (test_num, test_name)
            VALUES (getCount, name);
    END$$
DELIMITER ;



Gọi SP

CALL autoInc('one');
CALL autoInc('two');
CALL autoInc('three');



Tra bảng

SELECT * FROM tests;

+---------+----------+-----------+
| test_id | test_num | test_name |
+---------+----------+-----------+
|       1 |       1  | one       |
|       2 |       2  | two       |
|       3 |       3  | three     |
+---------+----------+-----------+



VÍ DỤ # 2:CHỨC NĂNG DO NGƯỜI DÙNG ĐỊNH NGHĨA (UDF)


Bảng
CREATE TABLE tests (
    test_id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    test_num INT(10) NULL,
    test_name VARCHAR(10) NOT NULL
);



Chức năng do người dùng xác định

DELIMITER $$
CREATE FUNCTION autoInc ()
    RETURNS INT(10)
    BEGIN
        DECLARE getCount INT(10);

        SET getCount = (
            SELECT COUNT(test_num)
            FROM tests) + 1;

        RETURN getCount;
    END$$
DELIMITER ;



Chèn bằng UDF

INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'one');
INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'two');
INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'three');



Tra bảng

SELECT * FROM tests;

+---------+----------+-----------+
| test_id | test_num | test_name |
+---------+----------+-----------+
|       1 |       1  | one       |
|       2 |       2  | two       |
|       3 |       3  | three     |
+---------+----------+-----------+

Những điều này đã được thử nghiệm và xác minh. Cá nhân tôi muốn sử dụng chức năng này, nó linh hoạt hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sắp xếp Mảng đa chiều theo các chỉ mục cho trước - PHP?

  2. Bắt đầu ngày đầu tuần trong MySql bằng cách sử dụng Week No

  3. Truy vấn cập nhật động PHP PDO tới MYSQL

  4. mysql trong xampp bắt đầu và dừng sau năm giây

  5. MySQL tối ưu hóa INSERT tốc độ bị chậm lại do các chỉ số