tôi không thể tạo phím nước ngoài với ON DELETE SET DEFAULT
, nhưng nếu tôi sử dụng ON DELETE CASCADE
sau đó tất cả các công trình ở đây là sql tôiKhông thể tạo khóa ngoại với ON DELETE SET DEFAULT
CREATE TABLE person(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
CREATE TABLE habits(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
habit VARCHAR(100) UNIQUE
);
INSERT INTO `test`.`habits` (`customer_id`, `habit`) VALUES (NULL, 'smoking'), (NULL, 'drinking');
INSERT INTO `test`.`person` (`customer_id`, `name`) VALUES (NULL, 'John'), (NULL, 'Steve');
CREATE TABLE foreigner(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
customer VARCHAR(100) DEFAULT 'John',
habbit VARCHAR(100) DEFAULT 'smoking',
FOREIGN KEY (customer) REFERENCES person(name) ON DELETE SET DEFAULT ON UPDATE CASCADE,
FOREIGN KEY (habbit) REFERENCES habits(habit) ON DELETE SET DEFAULT ON UPDATE CASCADE
);
Đó là lạ mà nó hoạt động nếu tôi sử dụng ON DELETE CASCADE
.... bất kỳ suy nghĩ nào?
Vì vậy, thay vì 5 (hoặc bất kỳ số olther khác) sẽ bị xóa khỏi bảng 'người nước ngoài' (do hiệu ứng xếp tầng), bạn muốn kết thúc với năm (gần như) hàng giống hệt nhau với' (khách hàng, habbit) = ('John,' hút thuốc ') '. Tại sao bạn sẽ muốn điều đó? –
Và tôi không thể cưỡng lại việc đề cập đến 3 cột 'customer_id' vô dụng. –
bảng với những giá trị đó chỉ là một ví dụ - trong thực tế tôi có nhiều bảng lớn hơn với các giá trị và hàng thậm chí có thể hữu ích :) – fjckls