SQL : Alter table Add if not exist


  • legacy

    Bonjour,

    Je sais que cette notion n'existe pas ...

    Mais malgré avoir lu et cherché, je bloque j'ai toujours une erreur dans mes tests.

    J'avoue ne pas comprendre ce qui cloche ou ce que je loupe, je continue de chercher mais au cas ou, si quelqu'un à une piste

    Info :

    Version du serveur : 5.5.55-0ubuntu0.14.04.1 - (Ubuntu)

    Merci


  • legacy

    Je n'ai pas réussi avec une seule ligne SQL

    J'ai donc utilisé ça :

        $sql = "SHOW COLUMNS FROM ps_vip LIKE 'recall'";
        $res = Db::getInstance()->executeS($sql);
        if (!isset($res[0]['Field'])) {
            $add = "ALTER TABLE `ps_vip` ADD `recall` int(1) NOT NULL default '0';";
            if (!Db::getInstance()->Execute($add)) {
                $success = false;
            }
        }```
    
    Il doit sûrement exister un meilleure façon mais je ne l'ai pas trouvé.


  • Non il n'existe pas d'autre méthode car il n'est pas possible de faire un alter dans une jointure mais...
    Tu peux ADD ta colonne et intercepter l'erreur qui se produira si elle existe déjà
    et il me semble que mariadb admet la syntaxe if not exists
    https://mariadb.com/kb/en/library/alter-table/ à partir de la 10.0.2


  • legacy

    Merci pour la réponse
    Ca me rassure car je bloquais complètement.


Se connecter pour répondre