#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 или как настроена ваша форма.
Упрощение запроса правильных ответов на данный вопрос