Su código parece no tener ningún error en absoluto. Además, el hecho de que funcione bien cuando crea otra tabla como destino, utilizando la misma estructura y datos que la tabla original, muestra que el error no está ahí. La razón más probable es que tiene un disparador en su tabla original que está ejecutando una consulta que falla, y ese es el error que está viendo.