FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Borrar n Registros de una Tabla
Hola, Tengo una duda que en primera instancia pareseria sencilla pero no he encontrado como hacerlo, la idea seria borrar los primeros n registros de una tabla esto usando Firebird 1.5 , el problema es que me encontre un parrafo en el documento Firebird 1.5 Relese notes donde afirma que la siguiente posible intruccion que podria llegar ha hacer esto tendria el siguiente problema:
Two Gotchas with SELECT FIRST 1. This delete from TAB1 where PK1 in (select first 10 PK1 from TAB1); will delete all of the rows in the table. Ouch! the sub-select is evaluating each 10 candidate rows for deletion, deleting them, slipping forward 10 more...ad infinitum, until there are no rows left. y si efectivamente si ejecutas la instruccion no solo borra los 10 primero como pudieras esperar, sin no que borra todos los registros: Alguien mas Tiene un idea de como hacer esto ? Muchas gracias por su ayuda |
#2
|
||||
|
||||
En un query haces el select de esos primeros 10 registros y luego los recorres del primero al último borrándolo.
|
#3
|
||||
|
||||
Saludos
Cita:
Seria interesante que alguien nos dijera como se podria hacer en sentencias.
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#4
|
||||
|
||||
Cita:
__________________
No todo es como parece ser... |
#5
|
||||
|
||||
Desde delphi podrías hacer algo así,:
|
#6
|
|||
|
|||
Cita:
|
#7
|
||||
|
||||
Cita:
|
#8
|
|||
|
|||
Cita:
como la del inicio de este hilo: delete from TAB1 where PK1 in (select first 10 PK1 from TAB1); bueno si es que es posible ? |
#9
|
||||
|
||||
Cita:
Tal como lo veo, no será posible... ¿no es esto acaso un fallo?. Firebird debiera procesar primero el subquery, almacenar el resultado en algún lugar (tabla temporal, memoria, etc) y luego hacer el borrado de las líneas coincidentes? Desconocía como trabaja el motor en este caso particular, y confieso que he quedado sorprendido.. sospecho que forzosamente tendrá que haber algo.... no puede hacerse con una sola sentencia SQL. Por ejemplo, creando un procedimiento almacenado, si que sería posible conseguirlo. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#10
|
||||
|
||||
Saludos
Cita:
Cita:
Cita:
Quien tenga Oracle, MSSQL y MYSQL, que prueben a ver. Me gustaria saber el resultado (con una base de datos de prueba, claro está). *Mucho pensamientos
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#11
|
||||
|
||||
Cita:
// Saludos |
#12
|
|||
|
|||
Bueno pensandolo muy bien si es que existe una soluccion aun cuando sea con un procedimiento almacenado en la base de datos alguien tiene una idea, supongo que se tendria que Usar una Tabla temporal o algo asi alguien sabe como ?
|
#13
|
||||
|
||||
Cita:
Hasta Luego -
__________________
No todo es como parece ser... |
#14
|
||||
|
||||
Cita:
Debes hacer algo así.
En el enlace que te deje sale más explicativo el uso de procedimientos almacenados y la instrucción For..Do. Hasta Luego -
__________________
No todo es como parece ser... |
#15
|
|||
|
|||
Me temo que no podria ser por este metodo, lo que pasa que este metodo requiere que
por lo menos uno de los campos en la tabla sea del tipo unico algo asi como un consecutivo unico para cada registro por que si esto no fuera asi, entonces cuando se ejecute la sentencia delete borraria campos de mas. Ademas no se que pasa si parseas una tabla de los primeros 10 en donde ademas estas borrando registros de esta tabla Me parese raro . Habria que probar No Cren....? |
#16
|
||||
|
||||
Tienes razón, debe haber un modo....
__________________
No todo es como parece ser... |
#17
|
||||
|
||||
Cita:
Cita:
y me he quedado sin datos Cita:
Cita:
|
#18
|
||||
|
||||
Cita:
Saludos..
__________________
No todo es como parece ser... |
#19
|
||||
|
||||
en un procedimiento sería algo así, como ya ha escrito antes Lucasarts_18:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código Únete al grupo Teaming clubdelphi | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 09-11-2005 a las 14:19:45. |
|
|
|