sql >> Database >  >> RDS >> Mysql

hoe kan ik de beperking van de externe sleutel controleren op verwijderingsbeperking met behulp van PHP?

Uitzonderingen gebruiken:

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

U kunt ook uw eigen uitzonderingen maken om te specialiseren voor FK-fouten:

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

Wanneer een FK-fout optreedt, throw new ForeignKeyException('FK failed');

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

Bijwerken:

mysqli heeft al uitzonderingen:

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

PHP mysqli uitzondering:http://php.net/manual/en /class.mysqli-sql-exception.php

Zie MYSQLI-foutcodes:http://dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

Nog een nuttige vraag:Externe sleuteluitzonderingen afhandelen in PHP

Update voor 2e vraag:

Externe sleutels uitschakelen met

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


  1. Heeft uw bedrijf een HR-database nodig?

  2. mysql-exporttabel op basis van een specifieke voorwaarde

  3. SQLite-transactie

  4. Hoe de tijd (in AM / PM) in SQL sorteren?