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

Ràng buộc duy nhất Mysql cho phép một hàng duy nhất cho một tổ hợp

Một bình thường cách thực hiện là trích xuất một bảng riêng để giữ giá mặc định:

CREATE TABLE price (
    name VARCHAR(255),
    price INT,
    PRIMARY KEY (name, price)
) ;

CREATE TABLE defaultPrice (
    name VARCHAR(255),
    price INT,
    PRIMARY KEY (name),
    FOREIGN KEY(name, price) REFERENCES price(name, price)
);

Hầu hết mọi người sẽ khuyên giới thiệu khóa thay thế:

CREATE TABLE item (
    id INT PRIMARY KEY,
    name VARCHAR(255),
    UNIQUE(name)
);

CREATE TABLE price (
    itemId INT,
    price INT,
    PRIMARY KEY (itemId, price),
    FOREIGN KEY (itemId) REFERENCES item (id)
) ;

CREATE TABLE defaultPrice (
    itemId INT,
    price INT,
    PRIMARY KEY (itemId),
    FOREIGN KEY (itemId, price) REFERENCES price (itemId, price)
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng MySQL, làm cách nào để chọn xếp hạng kết quả truy vấn của một hàng cụ thể?

  2. Có bất kỳ mức tăng hiệu suất nào trong việc lập chỉ mục một trường boolean không?

  3. Lỗi 1148 MySQL Lệnh đã sử dụng không được phép với phiên bản MySQL này

  4. Làm thế nào để tìm bảng lớn nhất trong cơ sở dữ liệu MySQL?

  5. Bảng thay thế SQL - cho phép giá trị cột NULL