J'ai eu ce problème étrange aujourd'hui quand j'ai laissé tomber une table temporaire. J'ai laissé tomber la table temporaire et descendu la table juste pour vérifier. Mais, la table n'a pas été abandonnée. Après quelques recherches, j'ai trouvé que:
MySQL permet de créer une table temporaire du même nom qu'une table permanente. Donc, la table temporaire a été supprimée et non la table permanente. Je suis vraiment confus avec la table sur laquelle je travaille.
Version MySQL: 5.1.36-enterprise-gpl-pro-log
Voici ce que j'avais testé:
mysql> create table test(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
mysql> create temporary table test(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
mysql> drop table test;
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
Est-ce un bug ou existe-t-il un autre moyen de résoudre ce problème?
create temporary table fake_db.t as select*from t
.Dans le manuel ( CRÉER UN TABLEAU ):
Cela signifie qu'après avoir créé une table temporaire portant le même nom qu'une table existante, vous ne pouvez pas accéder à la table normale par ce nom, mais uniquement à la table temporaire (pendant cette session). Si vous pensez que cela ouvre de l'espace pour une erreur, utilisez un nom différent pour la table temporaire (par exemple, utilisez le préfixe
temp_
) - c'est simple et ne laisse pas d'espace pour la confusion.la source
Vous avez répondu à cette question dans votre première. Vous n'avez pas " besoin d'insérer des enregistrements dans une table permanente ... même nom .... table temporaire ... même session" car vous avez le contrôle sur les noms de table!
Vous vous assurez simplement que la table temporaire reçoit un préfixe / suffixe tmp _ / _ tmp ou similaire car cela évite toute confusion (comme indiqué par @SpeedyGonsales).
Si vous faites ce genre d'erreur maintenant, pensez à quel point il sera facile de créer une nouvelle personne dans le système dans un an! Votre organisation (même si ce n'est que vous!) Devrait avoir une convention de dénomination , sinon vous obtenez ce type de SNAFU .
la source