Trong cấu trúc cơ sở dữ liệu của
CREATE TABLE Country (
name varchar(40) NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE City (
name varchar(40) NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Map (
country varchar(40) NOT NULL,
city varchar(100) NOT NULL,
PRIMARY KEY (country,city),
FOREIGN KEY (country) REFERENCES Country (name) ON DELETE CASCADE,
FOREIGN KEY (city) REFERENCES City (name) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Tôi hy vọng sẽ xóa cha mẹ khỏi City
bằng cách giữ nguyên giá trị tương ứng ở con bằng ba lệnh bằng nhau này
FOREIGN KEY (city) REFERENCES City (name) ON DELETE NO ACTION
FOREIGN KEY (city) REFERENCES City (name) ON DELETE RESTRICT
FOREIGN KEY (city) REFERENCES City (name)
Nhưng khi sử dụng NO ACTION
HOẶC RESTRICT
hoặc bỏ qua ON DELETE
. MySQL không cho phép tôi xóa khỏi cột cha với lỗi này:
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails
('test'.'Map', CONSTRAINT 'Map_ibfk_2' FOREIGN KEY ('city') REFERENCES 'City'('name')
ON DELETE RESTRICT
Tôi sai ở đâu Không phải trách nhiệm của SQL là NO ACTION
xóa cha mẹ và để lại đứa trẻ mồ côi?