我正在设计一个消息系统。
在我存储消息的表中,message_id
列是自动增量。
我有另一列message_reference_id
。
我希望其默认值为message_id
。
如何设置?
答案 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
可能会喜欢使用索引,而这些索引不能以这种方式提供。