Foreign key mysql set null

Рейтинг: 0Ответов: 0Опубликовано: 24.10.2014

Есть 2 таблицы: message и user.

`user` (
  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `role` enum('client','bot') NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

message CREATE TABLE `message` (
  `message_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`message_id`,`user_id`),
  KEY `fk_message_user1` (`user_id`),
  CONSTRAINT `fk_message_user1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Все внимание на SET NULL во внешнем ключе. Так работать не будет, потому что нужно разрешить NULL для поля message.user_id. Но я не могу его разрешить, потому что связан с primary ключем user.user_id, который не может быть NULL.

Вопрос: как в конкретной ситуации заставить mysql делать ON DELETE SET NULL?

Ответы

Ответов пока нет.