修改表过程中新旧索引对比

最后更新:2024-09-01 05:30:20 | 状态:未完成

大部分数据库需要先删除 再创建。

另外要注意的时,新表中如果没有索引并不会删除,只有明确标记删除的索引才会被删除,就是调用过index.drop()方法的索引,在save或alter(table)时才会删除这个索引
是因为许多情况会生成索引,比如唯一约束也会生成个索引,但并不一定出现在table.index中

    @Test
    public void index() throws Exception{
        Table tab = service.metadata().table("tab_index");
        if(null != tab){
            service.ddl().drop(tab);
        }
        tab = new Table("tab_index");
        tab.addColumn("id", "int");
        tab.addColumn("code", "varchar(10)");
        tab.addColumn("name", "varchar(10)");
        Index idx_origin = new Index("idx_origin");
        idx_origin.addColumn("code");
        tab.add(idx_origin);
        service.ddl().create(tab);

        tab = service.metadata().table("tab_index");
        //改个名 再加一列
        tab.getIndex("idx_origin").addColumn("name").setNewName("idx_rename");
        //新加一个
        Index idx_new = new Index("idx_new");
        idx_new.addColumn("name");
        tab.add(idx_new);
        service.ddl().save(tab);
    }

首页 最近更新 搜索 提交 回复