在orientDB中通过sql创建索引时,我可以通过执行以下操作将其设置为自动:
create index MyClass.my_field on MyClass (my_field) unique
当我向数据库添加记录时,我的索引会更新。但是,如果我通过执行以下操作使用Java创建索引:
OClass target = db.getMetadata().getSchema().getOrCreateClass("MyClass");
target.createProperty("my_field", OType.STRING);
target.createIndex("MyClass.my_field", OClass.INDEX_TYPE.UNIQUE, "my_field");
db.getMetadata().getSchema().save();
我的索引已成功创建,但未自动更新。是否有一些我可以设置为索引创建的标志,以告诉它在保存新记录时更新?
答案 0 :(得分:1)
嗯,这不是一个很好的解决方案,但我最终做了:
String sql = "create index MyClass.my_field on MyClass (my_field) unique"
OCommandSQL createIndex = new OCommandSQL(sql);
Object done = db.command(createIndex).execute(new Object[0]);
它有效。我永远不会在我的代码中编写原始sql的粉丝......
答案 1 :(得分:0)
上面的代码在orientdb 1.7.9上适用于我,即本机创建的索引确实会自动更新,就像人们期望的那样。