У меня есть две таблицы, как показано ниже:
CREATE TABLE Movies (
title varchar(100) NOT NULL,
year YEAR NOT NULL,
length int NOT NULL,
genre ENUM('action', 'adventure', 'comedy', 'family', 'crime', 'drama', 'fantasy', 'historical') NOT NULL,
studioName varchar(100) NOT NULL,
producerCNum int REFERENCES MoviesExec(certNum)
ON DELETE SET NULL
ON UPDATE CASCADE,
PRIMARY KEY (title, year)
);
CREATE TABLE MoviesExec (
name varchar(200) NOT NULL,
address varchar(100) NOT NULL,
certNum int NOT NULL,
netWorth int NOT NULL,
PRIMARY KEY (certNum)
);
Чтобы проверить операторы «ON DELETE» и «ON UPDATE», я вставил по одной строке в Movies и одну строку в MoviesExe c , В Movies я вставил:
INSERT INTO Movies
VALUES('star wars', 1977, 142, 'action', 'lucasfilm', 12345);
В MoviesExe c, я вставил:
INSERT INTO MoviesExec
VALUES('george lucas', '100 beverly hills', 12345, 1000000);
Затем я попытался обновить certNum для MoviesExe c, который должен был привести к изменению источникаCNum of Movies:
UPDATE MoviesExec SET certNum = 1234567 where name = 'george lucas';
Обновление отображается в MoviesExe c с certNum, теперь равным 1234567, но когда я делаю
SELECT * FROM Movies
ManufacturerCNum все еще равен 12345. Что здесь происходит?