public void undoInsert() throws SQLException {
        // make sure we are on a row
        checkCursor();

        // don't want this to happen...
        if (onInsertRow == true) {
            throw new SQLException(resBundle.handleGetObject("cachedrowsetimpl.invalidcp").toString());
        }

        Row currentRow = (Row)getCurrentRow();
        if (currentRow.getInserted() == true) {
            rvh.remove(cursorPos-1);
            --numRows;
            notifyRowChanged();
        } else {
            throw new SQLException(resBundle.handleGetObject("cachedrowsetimpl.illegalop").toString());
        }
    }
Immediately removes the current row from this
<code>CachedRowSetImpl</code> object if the row has been inserted, and
also notifies listeners the a row has changed.  An exception is thrown
if the row is not a row that has been inserted or the cursor is before
the first row, after the last row, or on the insert row.
<P>
This operation cannot be undone.

@throws SQLException if an error occurs,
                        the cursor is not on a valid row,
                        or the row has not been inserted
src/main/java/org/replicadb/rowset/sun/rowset/CachedRowSetImpl.java