mysql - 根据上一行增加一行

标签 mysql sql insert auto-increment

这是我的 table

id / step    / piece / tube / Validate / tool / tool2 / tool3 / index
__________________________________________________________________
1 / step3    /4113292/ ezpz / ok       /616255/222233/222231  / 0
2 / step6    /4113292/ ezpz /          /333255/212393/922231  / 0
3 / step2    /3322234/ PZEZ /          /321938/330200/3O32O   / 0
4 / step4    /4113292/ ezpz /          /616255/902233/8243231 / 0

当我添加具有相同管和件的新步骤(带有插入件)时,我想增加索引。

例如:

id / step    / piece / tube / Validate / tool / tool2 / tool3 / index
__________________________________________________________________
1 / step3    /4113292/ ezpz / ok       /616255/222233/222231  / 1
2 / step6    /4113292/ ezpz /          /333255/212393/922231  / 2
3 / step2    /3322234/ PZEZ /          /321938/330200/3O32O   / 1
4 / step4    /4113292/ ezpz /          /616255/902233/8243231 / 3

如果我为部件 4113292 和 tube ezpz 添加新步骤,我想要这个:

id / step    / piece / tube / Validate / tool / tool2 / tool3 / index
__________________________________________________________________
1 / step3    /4113292/ ezpz / ok       /616255/222233/222231  / 1
2 / step6    /4113292/ ezpz /          /333255/212393/922231  / 2
3 / step2    /3322234/ PZEZ /          /321938/330200/3O32O   / 1
4 / step4    /4113292/ ezpz /          /616255/902233/8243231 / 3
5 / step7    /4113292/ ezpz /          /616255/902233/8243231 / 4

或者如果我为 3322234 部分添加一个新步骤

id / step    / piece / tube / Validate / tool / tool2 / tool3 / index
__________________________________________________________________
1 / step3    /4113292/ ezpz / ok       /616255/222233/222231  / 1
2 / step6    /4113292/ ezpz /          /333255/212393/922231  / 2
3 / step2    /3322234/ PZEZ /          /321938/330200/3O32O   / 1
4 / step4    /4113292/ ezpz /          /616255/902233/8243231 / 3
5 / step1    /3322234/ PZEZ /          /432938/330200/3O32O   / 2

我这样做是因为当一个步骤没问题时我想进入下一步

最佳答案

来自用户的示例插入 - 而不是“?”将“0”作为默认值,因为每次第一次插入都是 0。

INSERT INTO operation (step, piece, tube, tool,tool2,3,index) VALUES (step3, 4113292, ezpz,616255,902233,8243231, 0);

当您再次使用同一件和 pipe 进行插入时,此触发器应该可以完成工作。

DELIMITER //
CREATE TRIGGER yourTrigger
BEFORE INSERT
   ON yourTable FOR EACH ROW
BEGIN
    DECLARE maxIndex INT DEFAULT -1;
    SELECT MAX(index1) m
        FROM yourTable
        WHERE piece = NEW.piece
            AND tube = NEW.tube
        INTO maxIndex;
    IF maxIndex >= 0 THEN
        SET NEW.index1 = maxIndex + 1;
    END IF;
END;//
DELIMITER;

测试于SQL Fiddle .

附注我必须将“index”重命名为“index1”,因为 SQL Fiddle 不适用于名为“index”的列。

关于mysql - 根据上一行增加一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582004/

相关文章:

php - 一个用户数据库,不同服务器上的两个应用程序

MySQL 自连接如果空函数

MYSQL数据库设计,大表间查询

MySQL:如果不存在,插入的最佳方式是什么?

python - Pymongo 在文档中插入

javascript - 我不知道如何在页面末尾加载第二次帖子

mysql - 如何解决Mysql错误: Code: 1064

python - Django - <FieldFile : None> While Updating a row in Employee table

c - 如何将数据添加到txt文件的新行

php - mySQL 按 MONTH 选择一列