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

mysql - CHÈN phạm vi ngày vào các cột ngày NẾU các ngày không trùng lặp với những ngày hiện có

Đáng buồn thay, điều này là không thể chỉ sử dụng MySQL. Hoặc ít nhất, trên thực tế. Cách ưu tiên sẽ là sử dụng các ràng buộc KIỂM TRA SQL, các ràng buộc này nằm trong tiêu chuẩn ngôn ngữ SQL. Tuy nhiên, MySQL không hỗ trợ chúng.

Xem: https://dev.mysql.com/doc /refman/5.7/en/create-table.html

Có vẻ như PostgreSQL không hỗ trợ các ràng buộc KIỂM TRA trên các bảng, nhưng tôi không chắc mức độ khả thi để bạn chuyển đổi công cụ cơ sở dữ liệu hoặc liệu điều đó có đáng để gặp rắc rối chỉ để sử dụng tính năng đó.

Trong MySQL, một trình kích hoạt có thể được sử dụng để giải quyết vấn đề này, sẽ kiểm tra các hàng chồng chéo trước khi chèn / cập nhật xảy ra và gây ra lỗi bằng cách sử dụng SIGNAL tuyên bố. (Xem: https://dev.mysql.com/doc/ refman / 5.7 / en / signal.html ) Tuy nhiên, để sử dụng giải pháp này, bạn phải sử dụng phiên bản MySQL cập nhật.

Ngoài các giải pháp SQL thuần túy, điều này thường được thực hiện trong logic ứng dụng, vì vậy bất kỳ chương trình nào đang truy cập cơ sở dữ liệu MySQL thường kiểm tra các loại ràng buộc này bằng cách yêu cầu mọi hàng bị vi phạm bởi mục nhập mới trong SELECT COUNT(id) ... tuyên bố. Nếu số lượng trả về lớn hơn 0, nó chỉ đơn giản là không có trong phần chèn / cập nhật.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xử lý một lượng lớn dữ liệu hiệu quả với MySQL và PHP

  2. Khóa ngoại MySQL trên bản thân

  3. Khi nào đóng con trỏ bằng MySQLdb

  4. Đăng nhập / Hệ thống đăng ký với php và mysql

  5. Truy vấn được đặt tên ở chế độ ngủ đông - tham gia 3 bảng