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

Làm thế nào để tạo một chỉ mục duy nhất 'hai mặt' trên hai trường?

Làm thế nào về việc kiểm soát những gì đi vào bảng để bạn luôn lưu trữ số nhỏ nhất vào cột đầu tiên và số lớn nhất trong cột thứ hai? Tất nhiên, miễn là nó 'có nghĩa' giống nhau. Nó có lẽ ít tốn kém hơn để làm điều đó trước khi nó được đưa vào cơ sở dữ liệu.

Nếu điều này là không thể, bạn có thể lưu các trường như cũ nhưng sao chép chúng theo thứ tự số thành hai trường KHÁC, trên đó bạn sẽ tạo khóa chính (giả mã-ish):

COLUMN A : 2
COLUMN B : 1

COLUMN A_PK : 1  ( if new.a < new.b then new.a else new.b )
COLUMN B_PK : 2  ( if new.b > new.a then new.b else new.a )

Điều này có thể dễ dàng được thực hiện với một trình kích hoạt (như trong câu trả lời của Ronald) hoặc được xử lý ở cấp cao hơn, trong ứng dụng.



  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 cài đặt MySQL trên Ubuntu

  2. Quyền truy cập bị từ chối; bạn cần (ít nhất một trong số) (các) đặc quyền SUPER cho hoạt động này

  3. trình tạo truy vấn:Mệnh đề IN với các cột tổng hợp

  4. Cách hàm INSTR () hoạt động trong MySQL

  5. Laravel - Số tham số không hợp lệ:tham số không được xác định