- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Verifica se esiste colonna MYSQL
-
Verifica se esiste colonna MYSQL
Volevo sapere come verificare se esiste una colonna, prima di un'azione
del tipo ALTER TABLE nome_tabella ADD etichetta VARCHAR(10) NOT NULL AFTER id
per evitare possibili errori durante l'inserimento.Grazie a tutti...
-
Prova questa.
[php]
delimiter '//'
CREATE PROCEDURE aggiungicolonna() BEGIN
IF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE COLUMN_NAME='etichetta' AND TABLE_NAME='nome_tabella' AND TABLE_SCHEMA='the_schema'
)
THEN
ALTER TABLEthe_schema
.nome_tabella
ADD COLUMNetichetta
VARCHAR(10) NOT NULL;
END IF;
END;
//
delimiter ';'
CALL aggiungicolonna();
DROP PROCEDURE aggiungicolonna;
[/php]
-
Grazie per lo script ci provo subito ....
-
Dimmi se va, ho fatto qualche ricerca e ho provato a formulare quello li.
-
Sono riuscito a risolvere alcuni problemi che mi davano errore all'esecuzione...ma in ogni caso non esegue il comando ....Perlomeno non da errore ....
/*delimiter '//'
CREATE PROCEDURE aggiungicolonna() BEGINIF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE COLUMN_NAME='atcgmp' AND TABLE_NAME='prova')
THEN
ALTER TABLE 'prova'
ADD COLUMN 'atcgmp' VARCHAR(10) NOT NULL;
END IF;
END;
//
delimiter ';'
CALL aggiungicolonna();
DROP PROCEDURE aggiungicolonna; */
-
Allora niente da fare...
Eh eh si potrebbe fare magari in due step? Cercare di reperire il nome delle colonne da una query php, poi se tale colonna non esiste allora si esegue l'aggiunta.
-
Questa parte ritorna un valore corretto
SELECT * FROM information_schema.COLUMNS
WHERE COLUMN_NAME='atcgmp' AND TABLE_NAME='prova'
-
Allora potresti farlo in due parti, anche se sono convinto che si possano usare delle condizioni per usarle nella stessa query.
-
Come da consiglio vedrò di usare le funzioni in 2 step...ringrazio per la gentilissima collaborazione che in ogni caso ha risolto il problema....