Script...URGENTE

29/08/2003 - 23:46 por Sebastián | Informe spam
Gente tengo que resolver el siguiente inconveniente: hacer
un script que borre datos de una base, pero de la forma
que les explico a continuación. También un breve ejemplo
como para que puedan entender mejor a que me refiero. Si
alguien me puede aunque sea orientar por donde debo
empezar me darían una mano enorme. Desde ya muchas gracias.

Pd: Al final les copié la secuencia lógica que yo creo que
debería seguir el script. Se me ocurre que quizas sea
necesario crear tablas temporarias.

- Borrado de información de N divisiones (1 o más). Las
divisiones se ingresarían manualmente en el script.
-Borrado de las divisiones de la tabla SIST_DIVI

Para ello debe contemplar
· La detección de filas a borrar a través de la
detección automática de tablas hijas de SIST_DIVI y el
armado de sentencia SQL para el borrado a través de la
columna FK. Esto debe realizarse teniendo en cuenta que
la FK de división se propaga en varios niveles.
Ejemplo:
1. Tabla CPAG_CDPR (FK CDPR_DIVISION_CDPR)
2. La PK de esta a su vez se propaga en CPAG_RCCP (FK
RCCP_DIVISION_CDPR, RCCP_TIPO_CDPR y RCCP_NUMERO_CDPR)
3. Esta a su vez en CPAG_CTEP, etc.

· Tablas hijas sin integridad: estas se borran
directamente con el atributo división.
Estas son: CONT_AUAS - Auditoria de asientos contables
CCOB_AUCB - Auditoria de comprobantes de clientes
COMP_AUCM - Auditoria de comprobantes de compras
ACCT_AUAC - Auditoria de comprobantes de contratos y
control de tiempos PROD_AUPD - Auditoria de comprobantes
de producción
CPAG_AUCP - Auditoria de comprobantes de proveedores
STOC_AUCS - Auditoria de comprobantes de stock
VENT_AUCV - Auditoria de comprobantes de ventas
TESO_AUMB - Auditoria de movimientos bancarios·

La secuencia lógica es:
a) Borrado de integridad referencial
b) Detección de tablas y armado de sentencias
c) Borrado de filas
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
31/08/2003 - 02:28 | Informe spam
Si se implementan las FK en forma consistente en tu modelo, usando la opcion
ON DELETE CASCADE, lograrias el efecto de propagar los DELETE a las tablas
hijas de una tabla maestra (y en forma transitiva).

Creo que puede servirte la declaración de FOREIGN KEY con ON DELETE CASCADE
disponible en la sentencia CREATE TABLE.

Espero sirva de ayuda, saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Sebastián" wrote in message
news:0b7601c36e77$09bf2030$
Gente tengo que resolver el siguiente inconveniente: hacer
un script que borre datos de una base, pero de la forma
que les explico a continuación. También un breve ejemplo
como para que puedan entender mejor a que me refiero. Si
alguien me puede aunque sea orientar por donde debo
empezar me darían una mano enorme. Desde ya muchas gracias.

Pd: Al final les copié la secuencia lógica que yo creo que
debería seguir el script. Se me ocurre que quizas sea
necesario crear tablas temporarias.

- Borrado de información de N divisiones (1 o más). Las
divisiones se ingresarían manualmente en el script.
-Borrado de las divisiones de la tabla SIST_DIVI

Para ello debe contemplar
· La detección de filas a borrar a través de la
detección automática de tablas hijas de SIST_DIVI y el
armado de sentencia SQL para el borrado a través de la
columna FK. Esto debe realizarse teniendo en cuenta que
la FK de división se propaga en varios niveles.
Ejemplo:
1. Tabla CPAG_CDPR (FK CDPR_DIVISION_CDPR)
2. La PK de esta a su vez se propaga en CPAG_RCCP (FK
RCCP_DIVISION_CDPR, RCCP_TIPO_CDPR y RCCP_NUMERO_CDPR)
3. Esta a su vez en CPAG_CTEP, etc.

· Tablas hijas sin integridad: estas se borran
directamente con el atributo división.
Estas son: CONT_AUAS - Auditoria de asientos contables
CCOB_AUCB - Auditoria de comprobantes de clientes
COMP_AUCM - Auditoria de comprobantes de compras
ACCT_AUAC - Auditoria de comprobantes de contratos y
control de tiempos PROD_AUPD - Auditoria de comprobantes
de producción
CPAG_AUCP - Auditoria de comprobantes de proveedores
STOC_AUCS - Auditoria de comprobantes de stock
VENT_AUCV - Auditoria de comprobantes de ventas
TESO_AUMB - Auditoria de movimientos bancarios·

La secuencia lógica es:
a) Borrado de integridad referencial
b) Detección de tablas y armado de sentencias
c) Borrado de filas

Preguntas similares