Gambas-it

Gambas3 => Programmazione => Topic aperto da: dex - 11 Settembre 2013, 22:21:38

Titolo: [risolto] Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 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.
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: Golia - 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
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 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?
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: Golia - 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
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: Golia - 11 Settembre 2013, 23:28:57
Citazione
senti ma il chesko che fine ha fatto?
dicono sia stato attaccato dalla ceskonite ;)
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 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
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 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à?
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: fsurfing - 12 Settembre 2013, 12:45:25
un modo può essere

Codice: [Seleziona]
if  hres.Fields.Exist(nome colonna) = true then
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 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'
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: fsurfing - 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
Titolo: Re: Mysql Aggiungere campo a una tabella esistente
Inserito da: dex - 19 Settembre 2013, 22:38:49
risolto
grazie a golia e a fsurfing