我有一个表格,其中包含 item_order 列的项目为非可空INT。
当我创建新项目时,我需要表中存在最高 item_order ,因此我可以增加它并插入新记录。在我的意思的抽象示例下面:
INSERT INTO item (name, item_order)
VALUES ('New Item', (SELECT MAX(item_order) FROM item AS item_order) + 1)
我认为这是疯狂的谈话:)我如何实现我的需要?
更新
我觉得这很有用:Increment a database field by 1
我可以使用上面显示的SELECT MAX(item_order) + 1
作为VALUES
参数吗?
答案 0 :(得分:0)
将item_order更改为AUTO_INCREMENT列。
ALTER TABLE `item`
CHANGE COLUMN `item_order` `item_order` INT(11) NOT NULL AUTO_INCREMENT;
这假设您已将其作为主键,否则如果您真的想这样做,那么您可以这样做。
SET @nextItemOrder = IFNULL((SELECT MAX(item_order) FROM item AS item_order),0) + 1;
INSERT INTO item (name, item_order)
VALUES ('New Item', @nextItemOrder);