- 详情见class = StandardRoutingEngine.java
- package org.apache.shardingsphere.core.route.type.standard;
public RoutingResult route() {
// 如果是写操作,并且操作的不是单个表的话,抛出异常 Cannot support Multiple-Table for xxx
if (this.isDMLForModify(this.sqlStatementContext.getSqlStatement()) && !this.sqlStatementContext.getTablesContext().isSingleTable()) {
throw new ShardingException("Cannot support Multiple-Table for '%s'.", new Object[]{this.sqlStatementContext.getSqlStatement()});
} else {
return this.generateRoutingResult(this.getDataNodes(this.shardingRule.getTableRule(this.logicTableName)));
}
}
private boolean isDMLForModify(SQLStatement sqlStatement) {
return sqlStatement instanceof InsertStatement || sqlStatement instanceof UpdateStatement || sqlStatement instanceof DeleteStatement;
}