【问题标题】:mysql add an autoincrement column with start valuemysql添加一个具有起始值的自动增量列
【发布时间】:2014-03-25 21:43:53
【问题描述】:

我想向预先存在的表添加一个新的自动增量列。但是,我需要该列中的 id 以特定值开始,即

alter table MyTable 
add column MyColumn int unsigned not null primary key auto_increment=999999;

这可能吗?我尝试发出:

alter table MyTable auto_increment=999999;

在我添加列之前,但它没有效果。因为添加列会自动生成id,所以在第一个语句之后运行第二个语句是不够的。

【问题讨论】:

    标签: mysql auto-increment


    【解决方案1】:

    不,它可以添加一个带有起始位置的 AI 列。但是你几乎得到了正确的语法。这是一个演示:

    mysql> CREATE TABLE foo (v varchar(10));
    
    mysql> INSERT INTO foo VALUES ('one'), ('two'), ('three');
    

    然后是棘手的语法。您必须将列声明为 AUTO_INCREMENT,但还要为 AUTO_INCREMENT 起始值提供 表选项。并且您需要用逗号将 ADD COLUMN 与 table 选项分开。

    mysql> ALTER TABLE foo ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY,
        AUTO_INCREMENT=999999;
    
    mysql> select * from foo;
    +-------+---------+
    | v     | id      |
    +-------+---------+
    | one   |  999999 |
    | two   | 1000000 |
    | three | 1000001 |
    +-------+---------+
    

    【讨论】:

    • 不错!我没有意识到你可以结合这样的陈述。 (这就是你正在做的,对吧?)
    • 是的。一个命令中的多个 ALTER TABLE 更改,以逗号分隔。人们常常忽略了您可以做到这一点,而他们最终只需要执行一个就运行多个耗时的 ALTER TABLE 操作。
    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2021-03-21
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多