Con una Sleep funziona? In tal caso, non credo sia un problema di attesa vera e propria, quanto ad un effetto collaterale dovuto al Garbage Collector del .NET Framework che si occupa, periodicamente, di ripulire gli oggetti inutilizzati.
Evidentemente, uno dei comandi OdbcCommand che esegui rimane allocato in memoria e mantiene la tabella nello stato di modifica della struttura, impedendo ad altri comandi di essere eseguiti.
Dovresti prova a chiamare il metodo Dispose del comando (non ricordo se è implementato) per tentare di rilasciare quanto è bloccato da esso, prima di fare altre operazioni.