fbpx
Skip to main content

domanda mySql

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6380 da COM_EASYSOCIAL_GUEST_NAME
domanda mySql è stato creato da COM_EASYSOCIAL_GUEST_NAME
Qualcuno sa dirmi perché quando inserisco una chiave esterna in una tabella "figlio" che referenzia la tabella "padre" e provo ad eseguire inserimenti che vadano contro il vincolo di chiave esterna il programma non mi impedisca di farlo?
Utilizzo precisamente la sintassi del libro ma è come se mySql non riconoscesse il legame esistente tra le due tabelle... :roll:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6385 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic domanda mySql

Qualcuno sa dirmi perché quando inserisco una chiave esterna in una tabella "figlio" che referenzia la tabella "padre" e provo ad eseguire inserimenti che vadano contro il vincolo di chiave esterna il programma non mi impedisca di farlo?
Utilizzo precisamente la sintassi del libro ma è come se mySql non riconoscesse il legame esistente tra le due tabelle... :roll:


hm...potresti essere un pò più chiaro... :?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6386 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic domanda mySql
create table impiegati(
cf char(15),
primary key(cf)
)

create table figli(
nome char(15),
cf char(15),
primary key(nome),
foreign key(cf) references impiegati
)

diciamo che in impiegati ho solamente il cf "A". se inserisco in figli una coppia ("pettorossi","B") perché non mi segnala errore per il vincolo di chiave esterna non essendoci il corrispondente "B" nella tabella impiegati? se invece provo ad inserire nuovamente "A" in impiegati l'errore dovuto all'inserimento di un valore già esistente nella chiave primaria me lo segnala....quindi??? non è che devo linkare in qualche modo le due tabelle, o usare una sequenza precisa nella loro creazione, o aggiungere qualche parolina magica che gli faccia capire a questo coso che la tabella impiegati è referenziata da figli??? è un piccolo grosso problemino, ma forse sono io che mi sto rincoglionendo 8) /* Grazie */

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6387 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic domanda mySql
primary key(cf, nome)
eccole linkate!
Tutti i rif a nomi di prof sono altamente sgraditi! :)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6388 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic domanda mySql
:roll: si ma così lo inserisco nella chiave primaria. io lo voglio come chiave esterna... insomma sono quasi sicuro che la sintassi sia quella che ho usato (anche perché è quella del libro :D ), solo che non funzionaaaa...dai conteeee, c'ho perso tre ore pe sta caxxataaa.... :evil:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
21 Anni 1 Mese fa #6389 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic domanda mySql
devi mettere l'INDEX e creare le tabelle con type = InnoDB altrimenti il mySQL nn le gestiscele kiavi esterne.

Prova così:

create table impiegati(
cf char(15) NOT NULL,
primary key(cf)
) TYPE = InnoDB;

create table figli(
nome char(15) NOT NULL,
cf char(15) NOT NULL,
primary key(nome),
INDEX (cf),
foreign key(cf) references impiegati(cf)
) TYPE = InnoDB;

fammi sapere se funzeca

Si prega Accedi o Crea un account a partecipare alla conversazione.