foreign key

Tianie-Finn

Nuovo Utente
11 Giu 2009
6
0
0
Ciao a tutti,
è il primo lavoro con mysql che provo a fare.. specifico che come tools sto usando il mysql query browser.. Il mio problema è con la foreign key.. penso che la sintassi sia corretta.. ma mi dice che non può creare la tabella e da errore errno150.
Il codice che ho scritto è questo:

CREATE TABLE DatiAnagrafici(
cartellaclinica varchar(5) NOT NULL default '',
PRIMARY KEY (cartellaclinica)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE EsameObiettivo(
id char(5) primary key,
ks_datianagrafici varchar(5) NOT NULL,
foreign KEY (ks_datianagrafici) references DatiAnagrafici(cartellaclinica) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=innodb;

l'errore me lo da quando provo a creare la seconda tabella..
qualcuno sa dirmi come poter risolvere questo errore?
Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, anche se in ritardo e non essendo un esperto, ma da quello che ho capito entrambe le tabelle dovrebbero essere innodb

prova, al massimo non funzia
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao scusa, ho ritrovato il testo del mauale, te lo posto

Con le tabelle InnoDB possiamo definire le foreign key, cioè collegare i valori delle colonne che contengono chiavi di altre tabelle alle tabelle stesse. In questo modo è possibile verificare automaticamente quando i valori della tabella madre vengono modificati o eliminati in modo da impedire queste modifiche o, al contrario, modificare di conseguenza anche i valori sulla tabella figlia. Inoltre non è possibile inserire nella tabella figlia valori che non hanno un corrispondente nella tabella madre. Vediamo un esempio di definizione:
CREATE TABLE madre(id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE figlia(id INT, madre_id INT,
INDEX par_ind (madre_id),
FOREIGN KEY (madre_id) REFERENCES madre(id)
ON DELETE CASCADE
) ENGINE=INNODB;
In questo codice vediamo definite due tabelle nelle quali la tabella figlia ha una foreign key sulla tabella madre. Quando viene cancellata una riga dalla tabella madre, se il valore di id è presente in un campo madre_id della tabella figlia la riga corrispondente viene anch'essa eliminata. Entrambe le tabelle devono essere di tipo InnoDB; entrambe le colonne devono figurare come primo campo di un indice.
È possibile dare un nome alla relazione specificando "CONSTRAINT nome" prima di FOREIGN KEY. Tale nome sarà poi utilizzabile qualora si decida di eliminare la FOREIGN KEY, con la sintassi "ALTER TABLE tabella DROP FOREIGN KEY nome".
Qualora il nome non venga indicato, sarà creato in automatico dal server e visualizzabile attraverso "SHOW CREATE TABLE tabella".
Nell'esempio abbiamo visto l'indicazione della clausola ON DELETE per gestire le cancellazioni sulla chiave esterna referenziata; allo stesso modo è possibile utilizzare ON UPDATE per gestire gli aggiornamenti. Entrambe le opzioni accettano come valori possibili uno dei seguenti: CASCADE, SET NULL, RESTRICT, NO ACTION.
Con il primo, come abbiamo visto, le modifiche sulla tabella madre vengono riportate sulla tabella figlia. Con SET NULL gli eventuali valori presenti nella tabella figlia vengono impostati a NULL (la definizione della colonna lo deve consentire). Le ultime due equivalgono a non indicare la clausola e comportano il rifiuto della modifica sulla tabella madre.
In una tabella InnoDB non è possibile utilizzare indici FULLTEXT, e le colonne di tipo geometrico sono disponibili solo a partire dalla versione 5.0.16.
Per le colonne AUTO_INCREMENT deve esistere un indice di cui siano l'unico componente.
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia foreign key cancellazione degli alberi figli di un nodo mancante MySQL 0
L Error Code: 1215. Cannot add foreign key constraint MySQL 3
MrSab [MySQL] Foreign key errore MySQL 5
JackIlPazzo Cannot add foreign key constraint MySQL 1
G Can't create table error - foreign key MySQL 0
M [Mysql] problema su Foreign Key MySQL 0
MarcoGrazia ON DUPLICATE KEY ma in realtà non UPDATE mai PHP 17
michele81 [WordPress] problemi plug meteo api key WordPress 4
M Errore pagina php 'Cannot detect primary key' PHP 8
G [MySQL] Errore importazione tabella .sql #1062 - Duplicate entry '592' for key 'PRIMARY' MySQL 20
V Domande su Keywords e Focus Key SEO e Posizionamento 0
S Insert into....on duplicate key update MySQL 2
S Inserimento API key Singring su CSM Wordpress PHP 0
C Aiuto INSERT INTO... ON DUPLICATE KEY UPDATE PHP 1
K Key API Javascript Google maps non valida. Javascript 1
C Inserimento key in una function strurl Javascript 0
C Cambiare Product Key Office 2007 Windows e Software 1
R Ordinare array in base al valore e alla key PHP 1
I Key remunerative per la scelta di una nicchia Guadagnare col Sito 0
A Conteggio key di ricerca PHP 9
borgo italia doppia PRIMARY KEY ? PHP 10
C Perdita Posizione per key con poca Concorrenza SEO e Posizionamento 1
Eugene Un meta "keywords" e un altro "key-phrases"? SEO e Posizionamento 4

Discussioni simili