7
votes

Dans SQLITE Comment ajouter une colonne dans le tableau si la même colonne n'existe pas dans le tableau

Comment puis-je ajouter une colonne dans une table SQLite si et uniquement si la même colonne n'existe pas dans la table?

Utilisation de alter Table Je suis capable de créer une nouvelle colonne, mais je veux savoir comment vérifier si cette colonne existe déjà dans la table ou non?


5 commentaires

Vous pouvez afficher les colonnes de table à l'aide de '.schema Tablename'


@krakover n'est pas une réponse?


@goresplatter en fonction de ce qu'il tente d'atteindre. J'ai expliqué comment éviter le problème, pas comment le résoudre .. \


@krakover Je ne vois aucun problème à éviter, mais à une question de déterminer la présence d'une colonne. Ce qui peut être déterminé à l'aide de votre commentaire. Mais c'est probablement ot.


Dupliqué possible de Alter Table Ajouter une colonne si elle n'existe pas dans SQLite


4 Réponses :


0
votes

Vous pouvez afficher les colonnes de table à l'aide de «Nom de .schema»


0 commentaires

7
votes

SQLite renvoie une erreur comme "Non Telle colonne: FOO" Si la table ne contient pas la colonne:

  select sql from sqlite_master 
  where tbl_name = 'YOURTABLE' and sql like '%"foo" CHAR%';    -- or whatever type


0 commentaires

5
votes

Il n'y a aucun moyen (que je sache) de tout faire dans une seule requête SQLite. Vous devez utiliser le code d'application pour gérer le si / elseness.

Vérifiez si la table existe ou non: p> xxx pré>

Vérifiez si la colonne existe dans la table ou maintenant p> xxx pré>

Cependant, une meilleure approche peut être une meilleure approche de la base de données de base de données basée sur les versions de schéma que votre demande maintient (par exemple, une déclaration de table d'alter spécifique à partir de la version 1 à 2 de Schema): P>

pragma user_version;


0 commentaires

1
votes

Il semble que cela soit impossible de vérifier si la colonne n'existe pas et addindg la nouvelle colonne d'une commande d'une seule commande, car SQLite ne prend pas en charge "sinon existant" pour la colonne. "Si ce n'est pas existant" ne fonctionne que sur la table. Voici ce que je vais faire: xxx


0 commentaires