sql >> Database teknologi >  >> RDS >> Mysql

hvordan kan jeg kontrollere fremmednøglebegrænsning ved sletningsbegrænsning ved hjælp af PHP

Brug undtagelser:

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

Du kan også lave dine egne undtagelser for at specialisere dig i FK-fejl:

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

Når der opstår en FK-fejl, throw new ForeignKeyException('FK failed');

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

Opdatering:

mysqli har allerede undtagelser:

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

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

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

Et andet nyttigt spørgsmål:Håndtering af udenlandske nøgleundtagelser i PHP

Opdatering til andet spørgsmål:

Deaktiver fremmednøgler med

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


  1. MySQL - Kan ikke indsætte NULL-værdi i kolonne, men jeg har angivet en standardværdi?

  2. Vil du udflade aggregerede nøgle/værdi-par fra et JSONB-felt?

  3. Tæl antallet af forskellige rækker for flere værdier

  4. Forståelse af ProxySQL-revisionsloggen