Chiavi esterne MySQL 5.0

hamlet-votailprof
Qualcuno sa se funzionano in mysql 5.0? Mi dicono di si....
A parte questo, qualcuno sa la sintassi esatta da mettere nella tabella in cui vengono importate le kiavi?

nel sito ho trovato questo:

CREATE TABLE score
(
reviewingid integer,
questionnumber integer,
score integer,
FOREIGN KEY (reviewingid) REFERENCES reviewing (reviewingid) on delete cascade
);


io sapevo che bastava REFERENCES ()

qualcuno le ha provate?

Risposte
hamlet-votailprof
sono riuscito ad usare le chiavi esterne....il problema era il pacchetto xaamp.


bye

hamlet-votailprof
è uguale alla mia la sintassi

FOREIGN KEY (reviewingid) REFERENCES reviewing (reviewingid) on delete cascade

il problema è che su alcune configurazioni le chiavi esterne funzionano su altre no, non si sa il motivo!!!

Mi informerò sulla mailing list e vi farò sapere, se vi interessano, le motivivazioni.


PS: EmerApostrofOmina....le chiavi esterne si usano così...il references crea la correlazione...dichiarare la chiave esterna non ha senso senza referenziarla.

bluedragon:


create table Prova(
    cod_articolo integer primary key
          references Articolo(Cod_articolo),
    n_vendite    integer,
    data         date
);

la chiave esterna non viene considerata!!!


Perchè quella che hai appena scritto è un reference, una relazione, non una chiave esterna. E comunque dovresti sempre specificare le politiche di update e delete dopo la definizione della relazione. X le chiavi esterne puoi usare solo foreign key. Almeno Santoro così docet. :lol: :lol:

Baci.

beltipo-votailprof
ehi blu, benvenuto!!
mi sa che se sei cosi preparato con il mysql ti disturberemo spesso :wink:

bluedragon-votailprof
Su Mysql 5.0 le chiavi esterne funzionano(a me) solo se poste nel seguente modo:

create table Prova(
    cod_articolo integer primary key,
    n_vendite    integer,
    data         date,

    foreign key (cod_articolo)
         references Articolo(Cod_articolo)
);


Mentre se scrivo:

create table Prova(
    cod_articolo integer primary key
          references Articolo(Cod_articolo),
    n_vendite    integer,
    data         date
);

la chiave esterna non viene considerata!!!

hamlet-votailprof
Sul 4 che io sappia non c'erano ancora le chiavi esterne, o meglio, potevi usare la sintassi ma non erano implementate. Sul 5 finalmente dicono che le hanno implementate, ma non le vedo funzionare.

Che io sappia dovrebbero fare la seguente:

tabella1--> kiave
tabella2--> reference alla chiave della tabella1.

tabella1--> ID1
tabella2--> n tuple referenziate alla tabella 1

se
tabella1--> elimina l'ID1
tabella2-->(con ON DELETE CASCADE) le tuple referenziate all'ID1 vengono cancellate.

mi sbaglio??

beltipo-votailprof
sorry..se ancora eravamo sul 4 sapevo tre cose...
vediamo se ti aiutano, anche perche avevo pensato di migrare il server a mysql 5.0

hamlet-votailprof
Ne ho saputo qualcosa in più sul manuale ufficiale di MySQL 5.0

la sintassi è la seguente

create table (,)ENGINE=INNODB;

Non so a cosa serva ENGINE=INNODB, ma dev'essere specificato in tutte le tabelle(dov'è presnete il discorso chiave esterna).
RISULTATO: da dei warnings ad ogni query di creazione tabella e niente d+.
Le chiavi esterne non funzionano ancora!!!
Qualcuno mi aiuti pls!!!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.