mysql - MySQL 中重复列自动递增

标签 mysql

我有一个主列id AUTO_INCRMENT的项目表。每个项目都有一个 type(为了举例,类型可以是 apple orangebanana)和一些列数据。如何创建一个列迭代,在插入新项目时该列将成为该特定类型项目的递增值/id?

此外,由于表格已经填充了数据,我如何更新现有数据以遵循该模式(按 time_added 的顺序)。

CREATE TABLE IF NOT EXISTS `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `iteration` int(11) NOT NULL,
  `type` smallint(6) NOT NULL,
  `data` binary(16) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `items`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_iteration` (`type`,`data`) USING BTREE;

最佳答案

您需要针对您的 items 表设置一个触发函数:

DELIMITER //
CREATE TRIGGER item_insert BEFORE INSERT ON items
FOR EACH ROW
BEGIN
IF (NEW.iteration IS NULL OR NEW.iteration=0) THEN
SET NEW.iteration = (SELECT 1+MAX(iteration) FROM items WHERE type=NEW.type);
END IF;
END; //
DELIMITER ;

关于mysql - MySQL 中重复列自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396367/

相关文章:

php - 需要 mySQL 建议 - 如何构建特定的 mysql 数据库/架构 - 内部示例

mysql - WordPress 分片 : which multi-db plugin to use?

php - 将两个不同的表相加并减去其总数

php - SQL 内部查询不提供输出

MySQL Workbench 可视化解释不起作用

php - MYSQL SUM 查询与 Group By 和 Join 问题

mysql - 如何将 mysqldump 用于表的一部分?

php - 为什么在 UPDATErequest 中请求 +1 会得到 +2?

php - SQL 无法正确处理用户创建的变量

python - 如何在 Pandas read_sql() 中使用通配符 (%)