Auto Increment Composite Key InnoDB

后端 未结 1 1545
攒了一身酷
攒了一身酷 2020-12-10 08:25

I want to create a MyISAM like behavior for an InnoDB MySQL table. I want to have a composite primary key:

PRIMARY KEY(id1, id2)

Where id1 auto increments ba

相关标签:
1条回答
  • 2020-12-10 08:49

    You can use this BEFORE INSERT trigger to substitute zero id-values -

    CREATE TRIGGER trigger1
      BEFORE INSERT
      ON table1
      FOR EACH ROW
    BEGIN
    
      SET @id1 = NULL;
    
      IF NEW.id1 = 0 THEN
        SELECT COALESCE(MAX(id1) + 1, 1) INTO @id1 FROM table1;
        SET NEW.id1 = @id1;
      END IF;
    
      IF NEW.id2 = 0 THEN
    
        IF @id1 IS NOT NULL THEN
          SET NEW.id2 = 1;
        ELSE
          SELECT COALESCE(MAX(id2) + 1, 1) INTO @id2 FROM table1 WHERE id1 = NEW.id1;
          SET NEW.id2 = @id2;
        END IF;
    
      END IF;
    
    END
    

    Then insert zero-values (id1 or id2) to generate new values -

    INSERT INTO table7 VALUES(0, 0, '1');
    INSERT INTO table7 VALUES(0, 0, '2');
    INSERT INTO table7 VALUES(1, 0, '3');
    INSERT INTO table7 VALUES(1, 0, '4');
    INSERT INTO table7 VALUES(1, 0, '5');
    ...
    
    0 讨论(0)
提交回复
热议问题