我有一个包含列id,名称,描述和状态的MYSql表。 id列自动递增并且是主键。现在,我想在名为'display_priority'的表中添加另一列。我希望在此列上使用“order by”来提取记录。
如何在插入记录时自动填充此表(基于ID)? 插入时display_priority值无关紧要。在显示记录之前,应在稍后的某个时间点重新排列。但是,插入的值必须是唯一的。
有任何帮助吗?提前谢谢。
编辑:我知道这可以通过插入后触发器来完成。如果,我想避免触发怎么办?还有别的吗?
答案 0 :(得分:1)
如果您想避免TRIGGER
,可以使用当前UNIX_TIMESTAMP
或CURRENT_TIMESTAMP
作为默认值。但如果在同一秒内拖曳或更多INSERT
你就会遇到问题......
display_priority TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
答案 1 :(得分:1)
您获取表的最大ID并将1添加为自动递增的ID预测。
INSERT INTO `table_name` (col1, col2, col3)
SELECT val1, val2, max(id) + 1 AS val3 FROM `table_name`;
<!-- id is auto-incremented -->
Example
INSERT INTO `users` (name, email, display_priority)
SELECT 'Dave', 'dave@email.com', max(id) + 1 AS display_priority FROM `users`;
答案 2 :(得分:0)
您可以在插页上添加TRIGGER
女巫更新display_priority
,其值为maximum
的{{1}}加一。
display_priority