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

Giá trị mặc định của MySQL làm giá trị của trường khác

Tôi thấy hai giải pháp khả thi cho việc này:

1. Khả năng:

Bạn chỉ cần sử dụng một hàm để bỏ qua sort_num nếu nó không được đặt:

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

coalesce() trả về giá trị không rỗng đầu tiên, do đó bạn sẽ chèn các giá trị cho sort_num nếu bạn thực sự cần sắp xếp lại các mặt hàng.

2. Khả năng:

Bạn viết một trình kích hoạt, tự động đặt giá trị nếu nó không được đặt trong câu lệnh chèn:

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
//

(lấy cảm hứng từ nhận xét này )

Tuy nhiên, điều này có thể gặp phải sự cố song song (chèn nhiều truy vấn cùng một lúc)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng Hibernate Annotations để thêm chỉ mục trên Lob / Clob / tinyblob

  2. Nâng cấp MySql và tăng tự động gây ra khoảng trống

  3. ASP, MySQL và UTF-8

  4. SQL SERVER - Thủ thuật - Chạy SSMS với tài khoản Windows khác nhau

  5. Thêm phân trang và tìm kiếm bằng cách sử dụng dữ liệu jquery