Foreign key mysql set null
Есть 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?
Источник: Stack Overflow на русском