Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [MySQL] ALTER TABLE

  1. #1

    [MySQL] ALTER TABLE

    Ciao,
    mi chiedevo se esistesse in MySQL la possibilità di utilizzare con l'operatore ADD nella funzionalità "ALTER TABLE" l'opzione "IF NOT EXISTS" così come si fa con la "CREATE TABLE".

    Leggendo il manuale non ho trovato niente a riguardo, secondo voi c'è una possibilità di fare questa cosa?

    Esempio:
    Codice PHP:
    ALTER TABLE tabella1
       ADD 
    IF NOT EXISTS nome VARCHAR(32NOT NULL DEFAULT 'pippo' AFTER id
    Administrator of NAMDesign.Net

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Potresti ricorrere a una stored procedure all'interno della quale, tramite l'information schema, verifichi l'esistenza o meno del campo e agisci di conseguenza.

  3. #3
    dici una stored procedure che faccia un controllo del tipo:
    Codice PHP:
    SELECT 
    FROM `COLUMNS
    WHERE 
          
    `TABLE_SCHEMA` = 'nome_database' AND 
          `
    TABLE_NAME` = 'tabella_da_alterare' AND 
          `
    COLUMN_NAME` = 'colonna_da_aggiungere' 
    e nel caso non ci sono corrispondenze allora effettua le operazioni di ADD, anche se questo significherebbe che qualora dovessi fare una alter table con operazioni miste (oltre alle ADD) dovrei scinderla in due: una che fa le alterazioni DROP e CHANGE/MODIFY e l'altra che fa tutte le ADD.

    Nonostante questo, però, è un buon consiglio; ti ringrazio
    Administrator of NAMDesign.Net

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sì, l'idea era quella.

    codice:
    if not exists (query su information_schema) then
    set @s = concat('alter table tabella add ' , campo, 	.....);
    prepare stmt from @s;
    execute stmt;
    Poi non conosco tutte le implicazioni, tipo sei hai la necessità di aggiungere campi di tipi diversi e quindi dover verificare l'esistenza di parametri opzionali quali la dimensione di un campo char/varchar. ecc.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.