Не удается создать внешний ключ с ON DELETE SET DEFAULT - PullRequest
5 голосов
/ 16 января 2012

Я не могу создать внешние ключи с 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     
);

Странно, что это работает, если я использую ON DELETE CASCADE .... какие-нибудь мысли?

1 Ответ

3 голосов
/ 16 января 2012

Из Справочного руководства MySQL ...

SET DEFAULT: это действие распознается синтаксическим анализатором, но InnoDB отклоняет таблицу определения, содержащие ON DELETE SET DEFAULT или ON ОБНОВЛЕНИЕ SET DEFAULT пункты.

Вы можете попробовать SET NULL, но я не уверен, что это вызовет у вас другие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...