Ciao, sto a usare MYSQL per esame di Basi di dati, devo fare tutto in modo a mano senza tool grafici.
Non mi è chiaro perchè non mi funziona il vincolo INTERELAZIONALE.
il codice:
-- creazione db inizio-------------
drop database prova;
create database prova;
use prova;
-- creazione db fine-------------
--- creazione tabelle INIZIO ---------------
Create table dipartimento
(
NomeDip char(15) primary key,
Sede char(20) not null
);
create table impiegato
(
matricola character(6) primary key,
nome varchar(20) not null,
cognome varchar(20) not null,
dipart char(15),
foreign key (dipart) references dipartimento(NomeDip) on delete cascade on update cascade,
unique (cognome, nome)
);
--- creazione tabelle FINE ---------------
-- inserimento -------------------
insert into dipartimento (NomeDip,Sede) values ('Lab 1','roma');
insert into dipartimento (NomeDip,Sede) values ('Lab 2','Milano');
insert into impiegato (matricola,nome,cognome,dipart)values ('88','mario','rossi' ,'Lab 1');
insert into impiegato (Matricola,Nome,Cognome,dipart)values ('80','luigi','bianco','Lab 2');
ed ottengo:
select * from dipartimento;
+---------+--------+
| NomeDip | Sede |
+---------+--------+
| Lab 1 | roma |
| Lab 2 | Milano |
+---------+--------+
select * from impiegato;
+-----------+-------+---------+--------+
| matricola | nome | cognome | dipart |
+-----------+-------+---------+--------+
| 88 | mario | rossi | Lab 1 |
| 80 | luigi | bianco | Lab 2 |
+-----------+-------+---------+--------+
faccio un aggiornamento:
update dipartimento set NomeDip = 'xxx' where NomeDip='Lab 1';
ottengo:
select * from impiegato;
+-----------+-------+---------+--------+
| matricola | nome | cognome | dipart |
+-----------+-------+---------+--------+
| 88 | mario | rossi | Lab 1 |
| 80 | luigi | bianco | Lab 2 |
+-----------+-------+---------+--------+
select * from dipartimento;
+---------+--------+
| NomeDip | Sede |
+---------+--------+
| xxx | roma |
| Lab 2 | Milano |
+---------+--------+
DOMANDA: essendo un vincolo INTERELAZIONALE, facendo l'aggiornamento sulla tabella dipartimento non dovevo avere in automantico un aggiornamento del valore anche sull'altra tabella?
Dove sbaglio? qualcuno può correggermi l'errore ?
le ho provate tutte, di teoria non trovo + cose nuove.