MySQL: есть ли способ установить для столбца значение по умолчанию с автоматическим увеличением (или скопировать из поля автоматического увеличения), но при этом разрешить вставку других значений?

#mysql #database-design #auto-increment

#mysql #дизайн базы данных #автоматическое увеличение

Вопрос:

Я создаю сайт вопросов и ответов. Я хочу сохранить оба вопроса и ответы в одной таблице:

 CREATE TABLE Q_n_A (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    question_id INT NOT NULL,
    # type indicates whether the record is a question (1) or an answer (0)
    type BOOL,
    title VARCHAR(80),
    body VARCHAR(5000)
);
  

Когда я вставляю новый вопрос, у меня нет значения question_id для этого нового вопроса. Таким образом, я хочу использовать значение auto_incremented id в качестве значения для question_id . Итак, в этом случае я хочу question_id либо использовать значение по умолчанию AUTO_INCREMENT , либо копировать из id .

Когда я вставляю ответ на существующий вопрос, я уже знаю, что является question_id для этого ответа. Поэтому я хочу указать значение для question_id при вставке.

Есть ли способ сделать то, что я хочу здесь: по умолчанию question_id на AUTO_INCREMENT (или скопировать из AUTO_INCREMENT поля id ), но при этом разрешить указывать значение question_id не по умолчанию?

Спасибо.

Комментарии:

1. Почему бы не отправить предложение в Area 51? area51.stackexchange.com

2. почти уверен, что вы можете (и должны) использовать TRIGGER для этого. Смотрите dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

Ответ №1:

 CREATE TABLE Q_n_A (
overall_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
parent_id INT default '0',
title VARCHAR(80),
body VARCHAR(5000)
);
  

Теперь, когда кто-то спрашивает, просто не вставляйте parent_id, в результате чего у него будет parent_id = 0
Когда кто-то ответит, вставьте в parent_id идентификатор ovverall_id через данные $ _POST или как настроена ваша форма.

Упрощение запроса правильных ответов на данный вопрос