Autore Topic: [risolto] Mysql Aggiungere campo a una tabella esistente  (Letto 1003 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
[risolto] Mysql Aggiungere campo a una tabella esistente
« il: 11 Settembre 2013, 22:21:38 »
ciao raga
mi si è presentato un problema, in una tabella stentente devo aggiungere un nuovo campo senza rifare tutta la tabella in quanto perderei i dati.

la tabella l'ho creata da codice

Codice: [Seleziona]
If $hconn.Tables.Exist("tipo") Then
                Message.info("la tabella tipo esiste")
            Else
        If Message.Question("Creo la Tabella tipo?", "Si", "No") = 1 Then
        sql = "CREATE TABLE tipo ("
          sql &= "idtipo MEDIUMINT NOT NULL auto_increment,"
          sql &= "cod VARCHAR(55) DEFAULT NULL,"
          sql &= "gr double(9,2) DEFAULT 0,"
          sql &= "titolo VARCHAR(9) DEFAULT NULL,"
          sql &= "testo VARCHAR(255) DEFAULT NULL,"
          sql &= "PRIMARY KEY(idtipo)"
            sql &= ")ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = latin1;"
            
          hres = $hConn.EXEC(sql)
          $hConn.Commit
        Message.info("tabella tipo creata")
        Endif
      Endif

ora dovrei aggiungere un nuovo campo con nome sconto di tipo double, ma come detto sopra non dovrei ne modificare i campi esistenti ne cancellare i dati presenti nei campi.
« Ultima modifica: 19 Settembre 2013, 22:39:21 da dex »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #1 il: 11 Settembre 2013, 23:19:25 »
ciao dex come butta?   :2birre:
Codice: gambas [Seleziona]

$hconn.EXEC("ALTER TABLE tipo ALTER COLUMN sconto TYPE double;")

e per aggiornarali
Codice: gambas [Seleziona]

$hconn.EXEC("UPDATE tipo SET sconto = '0'")

dovrebbe andare..credo

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #2 il: 11 Settembre 2013, 23:24:54 »
ciao dex come butta?   :2birre:
Codice: gambas [Seleziona]

$hconn.EXEC("ALTER TABLE tipo ALTER COLUMN sconto TYPE double;")

e per aggiornarali
Codice: gambas [Seleziona]

$hconn.EXEC("UPDATE tipo SET sconto = '0'")

dovrebbe andare..credo

ciao golia
è da parecchio che non ci si sente... a me tutto ok

non devo inserire i dati ma solo creare i campi, provo a crearle

senti ma il chesko che fine ha fatto?

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #3 il: 11 Settembre 2013, 23:27:18 »
petta non sono sicuro, è tanto che non ho più mysql..
ALTER TABLE tipo ADD sconto double;

.... non mi ricordo, per sqlite è come ti ho scritto prima e credo anche per postgres ma per mysql non son sicuro

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #4 il: 11 Settembre 2013, 23:28:57 »
Citazione
senti ma il chesko che fine ha fatto?
dicono sia stato attaccato dalla ceskonite ;)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #5 il: 11 Settembre 2013, 23:34:29 »
Citazione
senti ma il chesko che fine ha fatto?
dicono sia stato attaccato dalla ceskonite ;)

ahahahahahahahahahhahahahhahahahh povero cescko,  non mi ricordo nemmeno più il suo nick.

ok, ora faccio qualche prova e ti farò sapere

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #6 il: 12 Settembre 2013, 00:04:21 »
fatto

il codice giusto è
Codice: [Seleziona]
$hconn.EXEC("ALTER TABLE tipo ADD COLUMN sconto DOUBLE  DEFAULT 0 AFTER `testo;")

ora si presenta un altro problema, se il campo esiste dovrei fare un controllo con IF Then per evitare errori.

come si fà?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #7 il: 12 Settembre 2013, 12:45:25 »
un modo può essere

Codice: [Seleziona]
if  hres.Fields.Exist(nome colonna) = true then

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #8 il: 12 Settembre 2013, 18:54:49 »
un modo può essere

Codice: [Seleziona]
if  hres.Fields.Exist(nome colonna) = true then

ciao
ho provato ma va in errore il quanto cerca in tutto il database.
come faccio a farlo cercare nella tabella tipo?

Codice: [Seleziona]
Codice 11 - Errore Unknown symbol 'Fields' in class 'Connection'
« Ultima modifica: 12 Settembre 2013, 18:57:53 da dex »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #9 il: 12 Settembre 2013, 19:28:30 »
dim hres as result
dim $hcon as connection


.........codice per la connessione


hres=$hcon.exec(select * from mome_tabella)

if  hres.Fields.Exist(nome colonna) = true then

ecc ecc

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql Aggiungere campo a una tabella esistente
« Risposta #10 il: 19 Settembre 2013, 22:38:49 »
risolto
grazie a golia e a fsurfing