Mysql
 sql >> база данни >  >> RDS >> Mysql

как мога да проверя ограничаването на външния ключ за ограничаване на изтриването с помощта на PHP

Използвайте изключения:

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

Можете също да направите свои собствени изключения, за да се специализирате за FK грешки:

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

Когато възникне FK грешка, трябва да throw new ForeignKeyException('FK failed');

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

Актуализация:

mysqli вече има изключения:

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

PHP mysqli изключение:http://php.net/manual/en /class.mysqli-sql-exception.php

Вижте кодовете за грешки в MYSQLI:http://dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

Друг полезен въпрос:Обработка на изключения за външни ключове в PHP

Актуализация за 2-ри въпрос:

Деактивирайте външните ключове чрез

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. NullPointerException - Проблем със заключена база данни при извличане на данни от база данни и съхранение в масив

  2. MySQL:Как да изчислим седмици от конкретна дата?

  3. Как да слея две таблици в MySQL и където таблица 1 е основна

  4. Laravel 5 красноречив къдетоIn

  5. MySQL и NHibernate. Как да коригирате грешката:Колона „ReservedWord“ не принадлежи на таблица ReservedWords?