Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [MySql] Uso di alter table per inserire foreign key, help me :-(

    Ciao,
    ho due tabelle fatte nel seguente modo:

    codice:
    mysql> describe citta;
    +-------+-------------+------+-----+---------+----------------+
    | Field | Type        | Null | Key | Default | Extra          |
    +-------+-------------+------+-----+---------+----------------+
    | ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
    | Citta | varchar(35) | YES  |     | NULL    |                |
    | Cap   | int(11)     | YES  |     | NULL    |                |
    +-------+-------------+------+-----+---------+----------------+
    3 rows in set (0.02 sec)
    
    mysql> describe utente;
    +--------------+-------------+------+-----+---------+-------+
    | Field        | Type        | Null | Key | Default | Extra |
    +--------------+-------------+------+-----+---------+-------+
    | User_Id      | varchar(20) | NO   | PRI | NULL    |       |
    | Nome         | varchar(20) | NO   |     | NULL    |       |
    | Cognome      | varchar(20) | NO   |     | NULL    |       |
    | Data_Nascita | date        | NO   |     | NULL    |       |
    | Indirizzo    | varchar(50) | NO   |     | NULL    |       |
    | Cap          | int(11)     | NO   |     | NULL    |       |
    +--------------+-------------+------+-----+---------+-------+
    6 rows in set (0.01 sec)
    Praticamente devo fare in modo che il campo Cap dela tabella utente prenda il campo Cap della tabella citta come foreign key....devo modificare tale tabella con alter table, ho provato a fare così ma non mi funziona:

    ALTER TABLE utente ADD CONSTRAINT CapDeveEsistere FOREIGN KEY (Cap) REFERENCES citta (Cap);

    come mai? Cosa sbaglio?

    Domanda 2, se ho una tabella come questa:
    codice:
    mysql> describe comuni;
    +------------------+--------------+------+-----+---------+-------+
    | Field            | Type         | Null | Key | Default | Extra |
    +------------------+--------------+------+-----+---------+-------+
    | comune           | varchar(255) | YES  |     | NULL    |       |
    | provincia        | varchar(255) | YES  |     | NULL    |       |
    | cap              | varchar(255) | YES  |     | NULL    |       |
    | prefisso_tel     | varchar(255) | YES  |     | NULL    |       |
    | codice_istat     | varchar(255) | YES  |     | NULL    |       |
    | codice_catastale | varchar(255) | YES  |     | NULL    |       |
    | sito_comune      | varchar(255) | YES  |     | NULL    |       |
    +------------------+--------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    e la tabella è gia popolata di dati c'è modo di cambiargli il tipo del campo cap da varchar ad int e convertire tutti i dati contenuti nella colonna cap da varchar ad int?

    Tnx
    Andrea

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da AndreaNobili
    Praticamente devo fare in modo che il campo Cap dela tabella utente prenda il campo Cap della tabella citta come foreign key....devo modificare tale tabella con alter table, ho provato a fare così ma non mi funziona:

    ALTER TABLE utente ADD CONSTRAINT CapDeveEsistere FOREIGN KEY (Cap) REFERENCES citta (Cap);

    come mai? Cosa sbaglio?
    ciao, l'errore 'non mi funziana' non aiuta a capire quale possa essere il problema, cerca sempre di dare maggiori dettagli.

    a quanto ho capito le tabelle sono già popolate... pertanto verifica che il campo CAP della tabella Citta sia univoco e che nella tabella utente, i cap gia' presenti effettivamente corrispondano ad un cap della tabella citta.


    per il secondo problema, potresti semplicemente creasti un nuovo field con le caratteristiche desiderate.


    ciao

  3. #3

    Re: Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da 123delphi321
    ciao, l'errore 'non mi funziana' non aiuta a capire quale possa essere il problema, cerca sempre di dare maggiori dettagli.

    a quanto ho capito le tabelle sono già popolate... pertanto verifica che il campo CAP della tabella Citta sia univoco e che nella tabella utente, i cap gia' presenti effettivamente corrispondano ad un cap della tabella citta.


    per il secondo problema, potresti semplicemente creasti un nuovo field con le caratteristiche desiderate.


    ciao
    No le tabelle non erano popolate...alla fine ho fatto prima a cancellare la tabella e a ricrearla correttamente...

    Non ho capito cosa intendi dire per quanto riguarda la seconda domanda...

    Ti spiego meglio la situazione.

    Io ho questa tabella comuni che ho scaricato prefatta da Internet perchè se no riempirla a mano con tutti i dati sarebbe a dir poco un incubo.

    Solo che la persona che l'ha implementata (e sopratutto riempita) ha usato il tipo varchar per il campo CAP, nel mio database invece (nella tabella Utente) il campo Cap è fatto con gli int...certo potrei anche dire che nella mia tabella Utente (ancora vuota) il campo Cap lo implemento anche io con varchar e chissene frega però mi pare stupido perchè il cap non è una stringa ma dei numeri (e la proff credo proprio che non gradirebbe una cosa del genere).

    Quindi io ho la tabella Comuni che contiene tutti quei dati e vorrei trasformare la colonna Cap da varchar a int convertendo tutti i dati che contiene. Si può fare?

    Grazie
    Andrea

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    Re: Re: Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da AndreaNobili
    Solo che la persona che l'ha implementata (e sopratutto riempita) ha usato il tipo varchar per il campo CAP, nel mio database invece (nella tabella Utente) il campo Cap è fatto con gli int...certo potrei anche dire che nella mia tabella Utente (ancora vuota) il campo Cap lo implemento anche io con varchar e chissene frega però mi pare stupido perchè il cap non è una stringa ma dei numeri (e la proff credo proprio che non gradirebbe una cosa del genere).
    E' corretto usare un campo di tipo stringa. Ad esempio il CAP della mia città è 07100. Se facessi la conversione a intero perderesti lo zero iniziale.

  5. #5

    Re: Re: Re: Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da nicola75ss
    E' corretto usare un campo di tipo stringa. Ad esempio il CAP della mia città è 07100. Se facessi la conversione a intero perderesti lo zero iniziale.
    ops,
    questa cosa mi era sfugita....grazie di avermela fatta notare.

    Comunque a questo punto per pura curiosità se io ho ad esempio una tabella con un campo
    "codice" dichiarato come varchar (ed assumiamo che dentro ci abbia messo valori come 111, 112, 113) è possibile in un secondo momento (quando la tabella è già popolata) dirgli che il campo "codice" da ora in poi conterrà degli int e che tutti i valori dentro tale campo dovranno essere convertiti in int?

    Si può fare facilmente tramite qualche istruzione del DBMS oppure come?

    Grazie
    Andrea

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    Re: Re: Re: Re: Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da AndreaNobili
    Comunque a questo punto per pura curiosità se io ho ad esempio una tabella con un campo
    "codice" dichiarato come varchar (ed assumiamo che dentro ci abbia messo valori come 111, 112, 113) è possibile in un secondo momento (quando la tabella è già popolata) dirgli che il campo "codice" da ora in poi conterrà degli int e che tutti i valori dentro tale campo dovranno essere convertiti in int?

    Si può fare facilmente tramite qualche istruzione del DBMS oppure come?

    Grazie
    Andrea
    alter table tabella change codice codice int

  7. #7

    Re: Re: Re: Re: Re: Re: [MySql] Uso di alter table per inserire foreign key, help me :-(

    Originariamente inviato da nicola75ss
    alter table tabella change codice codice int
    mmm con codice codice che intendi?


    Ah altra cosa...sai com'è possibile rinominare un intero database dal prompt di mysql?

    Tnx
    Andrea

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    Re: Re: Re: Re: Re: Re: Re: [MySql] Uso di alter table per inserire foreign key, help

    Originariamente inviato da AndreaNobili
    mmm con codice codice che intendi?


    Ah altra cosa...sai com'è possibile rinominare un intero database dal prompt di mysql?

    Tnx
    Andrea
    Mi sono semplicemente attenuto al tuo esempio dove dicevi che il campo di si chiamasse codice.

    alter table nome_tabella change nome_campo nome_campo int

    Per la seconda domanda trovi maggiori informazioni qui

    http://dev.mysql.com/doc/refman/5.1/...-database.html

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 © 2025 vBulletin Solutions, Inc. All rights reserved.