mysql,将列“id”(自动增量)的值设置为列B的默认值

时间:2011-09-09 07:47:44

标签: mysql default

我正在设计一个消息系统。

在我存储消息的表中,message_id列是自动增量。

我有另一列message_reference_id。 我希望其默认值为message_id

如何设置?

2 个答案:

答案 0 :(得分:1)

您无法将默认值设置为其他列中的值。相反,如果您的列是非NULL,则可以将其更改为可为空,并将默认值设置为NULL。然后当您选择它时,请使用:

SELECT IFNULL(message_reference_id, message_id) AS message_reference_id
FROM your_table

你甚至可以把它放在一个视图中。

或者,您可以创建trigger来更新插入值。

答案 1 :(得分:1)

您可以改为使用NULL,并在访问时使用COALESCE(message_reference_id, message_id)

在一般情况下,这会为您提供message_reference_id。但是,如果是NULL,则会获得message_id

编辑:有了这些知识,你可以使用内部和外部查询 - 例如使用内部查询中的COALESCE技巧和外部查询中的GROUP BY

但是我不知道它的表现如何,因为GROUP BY可能会喜欢使用索引,而这些索引不能以这种方式提供。