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

Ràng buộc khóa ngoại trùng lặp Mysql

Nếu bạn nhìn vào kết quả truy vấn của mình, khóa ngoại bid_ibfk_3 đã tồn tại . Trên thực tế, nó nằm ở hàng thứ hai của kết quả.

def     projekt_classics    bid_ibfk_2      projekt_classics    bid     FOREIGN KEY
--the row below is the foreign key that you are trying to create
def     projekt_classics    bid_ibfk_3      projekt_classics    bid     FOREIGN KEY
def     projekt_classics    car_ibfk_1      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_3      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_ibfk_4      projekt_classics    car     FOREIGN KEY
def     projekt_classics    car_brand_ibfk_1    projekt_classics    car_brand   FOREIGN KEY

Đó là lý do tại sao bạn nhận được tên ràng buộc khóa ngoại trùng lặp khi bạn đang cố gắng thực thi điều này:

ADD CONSTRAINT `bid_ibfk_3` FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`)

Bạn có thể sửa đổi truy vấn của mình để kiểm tra trước nếu khóa ngoại mà bạn đang cố tạo không tồn tại, trước khi thực sự tạo nó.

IF NOT EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                   WHERE CONSTRAINT_SCHEMA = DATABASE()
                         AND CONSTRAINT_TYPE = 'FOREIGN KEY'
                         AND CONSTRAINT_NAME = 'bid_ibfk_3') THEN
   ALTER TABLE `bid` ADD CONSTRAINT `bid_ibfk_3`
        FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`);
END IF



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ưu tiên giao dịch?

  2. Đếm truy vấn kiểu liên minh mysql

  3. ĐẶT HÀNG BẰNG cho các giá trị tiền tệ

  4. Xuất dữ liệu từ MySQL sang Excel với mã hóa UTF-8

  5. Cách lấy ngày từ cột ngày giờ trong MySQL