- 詳情見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;
}