mysql ALTER TABLE si la colonne n'existe pas
J'ai ce code:
ALTER TABLE `settings`
ADD COLUMN `multi_user` TINYINT(1) NOT NULL DEFAULT 1
Et je veux modifier ce tableau que si cette colonne n'existent pas.
Je suis en train de beaucoup de façons, mais rien ne fonctionne:
ALTER TABLE `settings`
ADD COLUMN IF NOT EXISTS `multi_user` TINYINT(1) NOT NULL DEFAULT 1
À la procédure:
DELIMITER $$
CREATE PROCEDURE Alter_Table()
BEGIN
DECLARE _count INT;
SET _count = ( SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'settings' AND
COLUMN_NAME = 'multi_user');
IF _count = 0 THEN
ALTER TABLE `settings` ADD COLUMN `multi_user` TINYINT(1) NOT NULL DEFAULT 1
END IF;
END $$
DELIMITER ;
Je suis d'erreur en FIN de compte SI, ensuite, à la FIN et puis dans 1
Comment puis-je rendre ce processus aussi simple que possible?
double possible de MySQL ajouter une colonne s'il n'existe pas
double possible de MySQL: Comment faire pour ajouter une colonne si elle n'existe pas déjà?
J'ai essayé cette réponse! j'ai eu des erreurs
double possible de MySQL: Comment faire pour ajouter une colonne si elle n'existe pas déjà?
J'ai essayé cette réponse! j'ai eu des erreurs
OriginalL'auteur BrunoRamalho | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Utilisez la commande suivante à une procédure stockée:
"[I]n une procédure stockée" vaut la peine de réitérer des ici. Le dessus est valable de T-SQL sur son propre, et en utilisant principalement que pour les deux dernières années, j'ai été frapper ma tête pour un peu avant de re-lecture de ce post.
OriginalL'auteur Harsh
Utilisation de préparation et d'EXÉCUTION et d'interrogation du schéma.
L'hôte n'a pas besoin d'avoir l'autorisation de créer ou exécuter des procédures :
1+ j'ai fait de l'utiliser, mais xperienced quelques ennuis avec php, mais néanmoins j'aime cette approche. dba.stackexchange.com/questions/160476/...
OriginalL'auteur abahet
Voici une solution qui n'implique pas l'interrogation
INFORMATION_SCHEMA
, il ignore simplement l'erreur si la colonne n'existe pas.P. S. n'hésitez pas à donner le nom des autres plutôt que de
?
Avec cette procédure stockée j'arrive à économiser des ressources pour d'abord vérifier si une table existe. Réponse impressionnante, ce qui devrait être voté comme la meilleure réponse.
Ce travail sur la dernière version de mysql..
OriginalL'auteur raugfer
espère que cela va vous aider à
ou
OriginalL'auteur Ezhil
OriginalL'auteur Mukund
J'ai utilisé cette approche (Sans l'aide de la procédure stockée):
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tbl_name' AND COLUMN_NAME = 'column_name'
Si elle na pas retourner toutes les lignes de la colonne n'existe pas alors de modifier la table:
ALTER TABLE
tbl_name
AJOUTER une COLONNE
column_name
TINYINT(1) not NULL DEFAULT 1Espère que cette aide.
OriginalL'auteur Adiyya Tadikamalla
Ajouter un champ si n'existe pas:
addFieldIfNotExists code:
OriginalL'auteur Jonathan