Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql - Créer une table si elle n'existe pas, sinon tronquer ?

shmuel613, il serait préférable de mettre à jour votre question d'origine plutôt que de répondre. Il est préférable qu'il y ait un seul endroit contenant la question complète plutôt que de l'étaler dans une discussion.

La réponse de Ben est raisonnable, sauf qu'il semble avoir un "non" là où il n'en veut pas. Supprimer la table uniquement si ce n'est pas le cas exister n'est pas tout à fait correct.

Vous aurez en effet besoin de plusieurs déclarations. Soit créer puis remplir conditionnellement :

  1. CRÉER UNE TABLE TEMPORAIRE SI NON EXISTE fubar ( id int, name varchar(80) )
  2. TRUNCATE TABLE fubar
  3. INSERT INTO fubar SELECT * FROM barfu

ou simplement déposer et recréer

  1. SUPPRIMER TABLE SI EXISTE fubar
  2. CREATE TEMPORARY TABLE fubar SELECT id, name FROM barfu

Avec du SQL pur, ce sont vos deux vraies classes de solutions. J'aime mieux la seconde.

(Avec une procédure stockée, vous pouvez la réduire à une seule instruction. Quelque chose comme :TruncateAndPopulate(fubar) Mais au moment où vous écrivez le code pour TruncateAndPopulate(), vous passerez plus de temps qu'à utiliser le SQL ci-dessus.)