修改表过程中新旧索引对比
最后更新:2025-07-24 11:08:52
|
状态:未完成
大部分数据库需要先删除 再创建。
另外要注意的时,新表中如果没有索引并不会删除,只有明确标记删除的索引才会被删除,就是调用过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);
}