create table localita (
nome varchar(255) PRIMARY KEY
);
INSERT INTO localita VALUES ('Roma');
INSERT INTO localita VALUES ('Milano');
INSERT INTO localita VALUES ('Venezia');
create table zone (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nome varchar(255),
localita varchar(255)
);
ALTER TABLE zone ADD CONSTRAINT FK_zone FOREIGN KEY (localita) REFERENCES localita(nome) ON UPDATE CASCADE;
INSERT INTO zone (nome,localita) VALUES ('Testaccio','Roma');
INSERT INTO zone (nome,localita) VALUES ('Trastevere','Roma');
INSERT INTO zone (nome,localita) VALUES ('EUR','Roma');
INSERT INTO zone (nome,localita) VALUES ('Fiera','Milano');
If I modify a value inside the table "localita" in example I change "Roma" to "Roma (RM)" with an update, nothing happens on the table "zone". The value changes into "localita" but not into "zone".
I can also change the "localita" field into "zone" with a value not present inside the table "localita" and no error occurs.
Why the foreign key is not working?


Sign In
Create Account


Back to top









