你能提供一个非常简单的MYSQL示例,说明如何创建一个自动递增的“count”或“order”字段,但是在不同字段的每次更改后重新启动?在下表中,每当“膳食”字段发生变化时,“订单”字段将在“1”处重新启动。感谢。
用餐时间
午餐10:30 1
午餐11:00 2
午餐11:15 3
晚餐4:30 1
晚餐4:45 2
晚餐5:00 3
晚餐5:30 4
答案 0 :(得分:0)
自动增量始终是每个表,您无法使其特定于某些列或索引。
如果您想拥有每列自动增量ID,则需要手动执行此操作。即插入新项目时,请通过select MAX(id) FROM ... WHERE name = 'Dinner'
选择最大ID,然后插入maximum+1
。
要在某些报表的Select语句中执行此操作,您需要通过会话变量和case语句实现它。请参阅this tutorial。
答案 1 :(得分:0)
该功能在MyISAM引擎中可用,但在InnoDB中不可用。它可以模拟。请参阅MyISAM to InnoDB并搜索“abc”。以下是它的要点:
BEGIN;
SELECT @id := IFNULL(MAX(id),0) + 1 FROM foo WHERE other = 123 FOR UPDATE;
INSERT INTO foo
(other, id, ...)
VALUES
(123, @id, ...);
COMMIT;