столбец внешнего ключа не хочет принимать вставку говорит, что столбец не может быть нулевым - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь заполнить столбец внешнего ключа 'boss_id' из соединительной таблицы с именем 'clown_boss'. Boss_id - это новый внешний ссылающийся на себя внешний ключ, который предназначен для хранения значения 'id' босса клоуна. У меня уже есть заполненная таблица соединений, которая содержит 'id' из таблицы clown_info и недавно созданный 'boss_id', который также ссылается на 'id' из клоуна.

Вот как выглядит clown_info:

CREATE TABLE clown_info (

id int NOT NULL AUTO_INCREMENT,

name varchar (50) DEFAULT NULL,

gender char (1) DEFAULT NULL ,

last_seen varchar (50) DEFAULT NULL,

address varchar (30) DEFAULT NULL,

city varchar (30) DEFAULT NULL,

state char (2) DEFAULT NULL,

appearance varchar (50) DEFAULT NULL,

shirt_colour varchar (20) DEFAULT NULL,

pant_colour varchar (20) DEFAULT NULL,

hat_type varchar (20) DEFAULT NULL,

musical_instrument varchar (20) DEFAULT NULL,

transportation varchar (20) DEFAULT NULL,

boss_id int NOT NULL,

ПЕРВИЧНЫЙ КЛЮЧ (id),

КЛЮЧ boss_id_sr_fk (boss_id), CONSTRAINT boss_id_sr_fk ИНОСТРАННЫЙ КЛЮЧ (boss_id) ССЫЛКИ clown_boss (boss_id)

) ДВИГАТЕЛЬ = В noDB AUTO_INCREMENT = 15 CHARSET ПО УМОЛЧАНИЮ = utf8mb4 COLLATE = utf8mb4_0900_ai_ci

Я использую следующий код, чтобы попытаться вставить значения, когда получаю ошибку

UPDATE clown_info ci
SET boss_id = (SELECT boss_id FROM clown_boss cb WHERE ci.id = cb.id) ;

, поэтому я только что понял, что boss_id предназначен для ссылки на идентификатор в той же таблице. Предполагается, что это будет урок по самостоятельным ссылкам на внешние ключи. поэтому я уронил колонку, воссоздал ее. воссозданный clown_boss вставил значения и все еще сталкивается с той же проблемой при попытке поместить значения в boss_id из таблицы clown_boss

1 Ответ

1 голос
/ 21 апреля 2020

Проблема в том, что вы установили столбец 'boss_id' в таблице clown_info как ненулевой.

Я предполагаю, что ваш 'boss_id' столбец в таблице clown_boss принимает нулевое значение, верно? Вы не можете вставить нулевое значение в столбец «не ноль», поэтому он показывает ошибку.

Если вы измените свой столбец 'boss_id' в таблице clown_info по умолчанию null, ваша проблема должна быть решена. Или вы можете изменить столбец boss_id в clown_boss , чтобы он не был нулевым.

Вы можете обновить свою таблицу с помощью следующего запроса

ALTER TABLE clown_info MODIFY boss_id int;

По умолчанию столбцы обнуляются, если вы не объявляете их не равными NULL.

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