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

Nilai default MySQL sebagai nilai bidang lain

Saya melihat dua kemungkinan solusi untuk ini:

1. Kemungkinan:

Anda menggunakan fungsi untuk mengabaikan sort_num jika tidak disetel:

`SELECT * FROM mytable ORDER BY coalesce(sort_num, id)`

coalesce() mengembalikan nilai non-null pertama, oleh karena itu Anda akan memasukkan nilai untuk sort_num jika Anda benar-benar perlu memesan ulang item.

2. Kemungkinan:

Anda menulis pemicu, yang secara otomatis menyetel nilai jika tidak disetel dalam pernyataan penyisipan:

DELIMITER //

CREATE TRIGGER sort_num_trigger
BEFORE INSERT ON mytable
FOR EACH ROW BEGIN
    DECLARE auto_inc INT;
    IF (NEW.sort_num  is null) THEN
         -- determine next auto_increment value
        SELECT AUTO_INCREMENT INTO auto_inc FROM information_schema.TABLES
        WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME = 'mytable';
        -- and set the sort value to the same as the PK
        SET NEW.sort_num = auto_inc;
    END IF;
END
//

(terinspirasi oleh komentar ini )

Namun, ini mungkin mengalami masalah paralelisasi (beberapa kueri dimasukkan secara bersamaan)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan satu kolom hasil mysql_query ke dalam array?

  2. Jumlah maksimum record dalam tabel database MySQL

  3. daftar layanan brew menunjukkan mysql berjalan tetapi tidak dapat terhubung

  4. MySQL:JSON tertanam vs tabel

  5. Memahami MySQL TRUNCATE TABLE dengan Contoh Praktis