mysql, установить значение столбца "id" (автоинкремент) в качестве значения по умолчанию для столбца B - PullRequest
1 голос
/ 09 сентября 2011

Я проектирую систему сообщений.

В таблице, где я храню сообщения, столбец message_id имеет автоприращение.

У меня есть еще один столбец message_reference_id.Я хочу, чтобы его значение по умолчанию было message_id.

Как мне установить это?

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Вместо этого можно использовать NULL и при доступе использовать COALESCE(message_reference_id, message_id).

Это дает вам message_reference_id в общем случае. Однако, если это NULL, вы получите message_id.

РЕДАКТИРОВАТЬ: С этим знанием вы можете работать с внутренними и внешними запросами - например, используйте трюк COALESCE во внутреннем запросе и GROUP BY во внешнем.

Но я не знаю, насколько хорошо это работает, поскольку GROUP BY, вероятно, хотел бы использовать индексы, которые не могут быть предоставлены таким образом.

1 голос
/ 09 сентября 2011

Нельзя установить значение по умолчанию для значения в другом столбце. Вместо этого, если ваш столбец NOT NULL, вы можете изменить его на NULL и установить значение по умолчанию NULL. Затем, когда вы выберете его, используйте это:

SELECT IFNULL(message_reference_id, message_id) AS message_reference_id
FROM your_table

Вы могли бы даже поставить это в поле зрения.

В качестве альтернативы вы можете создать триггер , который обновляет значение при вставке.

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