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

làm cách nào để kiểm tra ràng buộc khóa ngoại về giới hạn xóa bằng PHP

Sử dụng Ngoại lệ:

try {
    $db->query(...);
} catch (Exception $e) {
    echo "an error occured during query";
}

Bạn cũng có thể đưa ra các Ngoại lệ của riêng mình đối với đặc biệt cho các lỗi FK:

class ForeignKeyException extends Exception {
    public function __construct($msg = 0, $code = 0) {
        parent::__construct($msg, $code);
    }
}

Khi lỗi FK xảy ra, bạn throw new ForeignKeyException('FK failed');

try {
    $db->query(...);
} catch (ForeignKeyException $e) {
    echo "FK error";
} catch (Exception $e) {
    echo "general error";
}

Cập nhật:

mysqli đã có ngoại lệ:

} catch (mysqli_sql_exception $e) {
    if ($e->getCode() == 'CODE FOR FK') {
        //...
    }
}

Ngoại lệ mysqli PHP: http://php.net/manual/en /class.mysqli-sql-exception.php

Xem mã lỗi MYSQLI: http:// dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

Một câu hỏi hữu ích khác: Xử lý ngoại lệ khóa ngoại trong PHP

Cập nhật cho câu hỏi thứ 2:

Tắt khóa ngoại bằng

SET foreign_key_checks = 0;
<your delete query here>
SET foreign_key_checks = 1;


  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ập nhật nhiều hàng với các khóa đã biết mà không cần chèn các hàng mới nếu tìm thấy các khóa không tồn tại

  2. Mysql không sử dụng chỉ mục trong các truy vấn có hiệu số

  3. Cách nhập tệp CSV vào bảng MySQL

  4. Vòng lặp PHP hoạt động như cronjob [đảm bảo chỉ một phiên bản đang chạy]

  5. Tìm kiếm toàn văn Mysql với kết quả phù hợp và chống lại