
# 事务中使用强制路由
SDK不支持分布式事务，事务与强制指定路由@DynamicRoute同时使用时，以第一条sql选择的数据源为准。
后续sql，即使使用@DynamicRoute指定数据源，也不生效。同一个事务中，不允许访问不同的数据库。
如下，service层的updateUser方法，开启了事务，并且里面有两个接口，第一个userReopository2上指定路由"dc2"，第二个userReopository2上指定路由"dc1"，此时以第一个接口中的注解指定的路由为准，使用"dc2"的数据源。
```
@Slf4j
@Repository
@javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT")
@DynamicRoute(source = "dc1")
public class UserRepository extends AbstractUserRepository {
    public User update(User user) {
        return this.updateById(user);
    }
}
@Slf4j
@Repository
@javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT")
@DynamicRoute(source = "dc2")
public class UserRepository2 extends AbstractUserRepository {
    public User update(User user) {
        return this.updateById(user);
    }
}
/**
 * UserService Class
 *
 * @since 2022-08-22
 */
@Slf4j
@org.springframework.stereotype.Service("UserService")
@javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT")
public class UserService implements IUserService {
    // auto generated code
    @Autowired
    private UserRepository userRepository;
    @Autowired
    private UserRepository2 userRepository2;
    /**
     * UpdateUserById Method
     *
     * @param user user
     * @return User
     */
    @Transactional
    public User updateUserById(User user) {
        userRepository2.update(user);
        return userRepository.update(user);
    }
}
```
