Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara membuat dua kolom kenaikan otomatis di MySQL?

Tidak tahu mengapa Anda memerlukan dua kolom nilai kenaikan otomatis, tidak ada gunanya... tetapi jika Anda bersikeras -
Anda dapat mencapainya dalam UDF atau SP dengan cara ini Anda memiliki beberapa kolom yang otomatis menaikkan nilai.

CONTOH #1:PROSEDUR TERSIMPAN (SP)


Tabel

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



Prosedur Tersimpan

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 ;



Hubungi SP

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



Cari tabel

SELECT * FROM tests;

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



CONTOH #2:FUNGSI USER-DEFINED (UDF)


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



Fungsi yang Ditentukan Pengguna

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 ;



Sisipkan menggunakan 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');



Cari tabel

SELECT * FROM tests;

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

Ini telah diuji dan diverifikasi. Saya pribadi akan menggunakan fungsinya, ini lebih fleksibel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ambil semua catatan induk/anak dari database di Laravel (data hierarkis)

  2. Tidak dapat menjatuhkan tabel:Batasan kunci asing gagal

  3. Bisakah 'salah' cocok dengan beberapa string di mysql?

  4. Cara mereset kata sandi root MySQL

  5. Bagaimana cara memperbarui bidang untuk menambah nilai ke nilai yang ada?