Как использовать автоматически увеличенный первичный ключ в качестве внешнего ключа?

Вот что я пытаюсь сделать:

У меня есть 2 таблицы ...

CREATE TABLE `parent` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `child` (
  `parent_id` int(11) DEFAULT NULL,
  `related_ids` int(11) DEFAULT NULL,
  KEY `parent_id` (`parent_id`),
  KEY `related_ids` (`related_ids`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

И тогда ограничение:

ALTER TABLE `parent` ADD FOREIGN KEY (`id`) REFERENCES `child` (`parent_id`);

Как вы можете видеть, родительский стол таблицы имеет автоинкрементный первичный ключ "id", который также используется в качестве внешнего ключа для дочерней таблицы.

Теперь я хочу вставить запись в родительскую таблицу, например так:

INSERT INTO parent SET DATA="abc";

И это терпит неудачу с ошибкой:

Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (anacorbero.parent, ОГРАНИЧЕНИЕparent_ibfk_1 ИНОСТРАННЫЙ КЛЮЧ (id) РЕКОМЕНДАЦИИchild (parent_id))

Я понимаю, что это терпит неудачу, потому что это не находит упомянутую запись в дочерней таблице. Если я начну с создания записи в дочерней таблице, установите для ее parent_id значение 1, а затем сбросьте счетчик автоинкремента родительской таблицы (чтобы следующая вставка имела идентификатор = 1), это работает! Но это не решение.

Я не вижу полезности блокировки вставки, если в дочерней таблице нет связанной строки ...

Я просто пытаюсь установить отношения один-ко-многим ...

(Я знаю, что могу использовать JOIN, но я пытаюсь использовать табличные отношения для целостности данных, а также в качестве метаданных для PHP)

Ответы на вопрос(2)

Ваш ответ на вопрос