PDA

Visualizza la versione completa : [SQL] Integrità referenziale


cleverboy
18-03-2003, 16:21
Prendiamo un esempio: 2 tabelle così fatte.

CREATE TABLE clienti (ID_cli int(2) primary key, Nome varchar(15) not null, Cognome varchar(20) not null,...)

CREATE TABLE ordini (ID_ord int(3) primary key, cliente int(2) references clienti(ID) not null, importo int(6) not null, ...)


Mi domando: se io inserisco come ID_cli 1 e 2 mentre nella tabella ordini faccio apparire un cliente 3, dovrei avere un errore! GIUSTO?? Se io impongo il vincolo di integrità referenziale sul campo ID, il campo cliente deve contenere solo e soltanto valori contenuti nel campo ID della tabella clienti! o no??

Mi correggereste il codice se c'è un errore....

Io ho provato su mySQL, voi fate come credete... :ciauz:

pippo75
18-03-2003, 16:52
credo come definizione sia references clienti(ID_cli), dato che devi referenziare un campo di un'altra tabella

cmq, a parte sto dettaglio, il resto è giusto

cleverboy
18-03-2003, 20:03
è solo un errore di trascrizione... effettivamente.

Ma allora se è giusto perché io riesco ad inserire qualsiasi 'cliente' nella tabella ordini?

Siamo sicuri che la sintassi sia giusta? Non è che manca qualche pezzo tipo check() o non so cos'altro???

:dottò:

pippo75
19-03-2003, 09:42
bho, in teoria è corretto
solo che io utilizzo Oracle, e lì ci sta un tool grafico che ti permette di definire i vincoli referenziali
e quando ne ho definito uno, e non inserisco i dati in modo coerente, l'applicazione mi tira botto
evidentemente nel pezzo di codice manca qualcosa, ma purtroppo non so dirti cosa

spiacente

Loading