无法使用ON DELETE SET DEFAULT创建外键

buk*_*ski 5 mysql sql database database-design

我无法创建外键ON DELETE SET DEFAULT,但如果我使用,ON DELETE CASCADE那么这里的所有作品都是我的sql

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     
);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我使用ON DELETE CASCADE....有什么想法吗?

Mat*_*lie 4

来自MySQL 参考手册...

SET DEFAULT:解析器可以识别此操作,但 InnoDB 拒绝包含 ON DELETE SET DEFAULT 或 ON UPDATE SET DEFAULT 子句的表定义。

您可以尝试 SET NULL,但我不确定这是否会导致其他问题。