Set AUTO_INCREMENT value programmatically

前端 未结 4 2023
我在风中等你
我在风中等你 2021-01-06 05:20

So this works...

ALTER TABLE variation AUTO_INCREMENT = 10;

But I want to do this;

ALTER TABLE variation AUTO_INCREMENT = (         


        
4条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-06 06:25

    You can dynamically inject static value to a dynamic SQL call as in:

    SET @minEmptyId := 1337;
    CALL statement(CONCAT('
      ALTER TABLE tableName
      AUTO_INCREMENT = ', @minEmptyId))
    ;
    

    statement procedure implementation:

    DELIMITER $$
    CREATE PROCEDURE statement(IN dynamic_statement TEXT)
    BEGIN
          SET @dynamic_statement := dynamic_statement;
          PREPARE prepared_statement FROM @dynamic_statement;
          EXECUTE prepared_statement;
          DEALLOCATE PREPARE prepared_statement;
      END$$
    DELIMITER ;
    

提交回复
热议问题