Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2012
hecospina hecospina is offline
Miembro
NULL
 
Registrado: oct 2007
Posts: 202
Poder: 12
hecospina Va por buen camino
update o delete en external table

Buenas noches

Uso la version 2.5 de firebird

Tengo una duda sobre tablas externas

Al querer borrar un registro o todos los registros de una tabla externa aparede el mensaje "Cannot delete rows from external files."

De igual forma si deseo modificar algun registro aparece el mensaje "Cannot update rows in external files."

Existe alguna forma de actualizar los datos de este tipo de tablas ?
o solo se puede insertar informacion en ellas

Gracias por sus respuesta
Responder Con Cita
  #2  
Antiguo 28-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.699
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que es así:
Código SQL [-]
DELETE FROM EXTERNAL_TABLE /* should delete all records */
DROP TABLE EXTERNAL_TABLE /* should close the external file so it can be deleted or renamed */

Actualizar creo que no puedes, una tabla externa es un "enlace" a un fichero externo, y que yo sepa no puedes modificar desde firebird (no sé si en las últimas versiones se puede)
Responder Con Cita
  #3  
Antiguo 02-11-2012
hecospina hecospina is offline
Miembro
NULL
 
Registrado: oct 2007
Posts: 202
Poder: 12
hecospina Va por buen camino
Update o delete en external table

Casimiro

Gracias por la respuesta, busque sobre el tema y al parecer no se pueden realizar "delete" ni "update" en estas tablas de tipo externas

Responder Con Cita
  #4  
Antiguo 02-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.699
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Tampoco se puede así?:
Código SQL [-]
DELETE FROM EXTERNAL_TABLE /* should delete all records */ 
DROP TABLE EXTERNAL_TABLE /* should close the external file so it can be deleted or renamed */
¿Lo has probado?
Responder Con Cita
  #5  
Antiguo 02-11-2012
hecospina hecospina is offline
Miembro
NULL
 
Registrado: oct 2007
Posts: 202
Poder: 12
hecospina Va por buen camino
update o delete en external table

Gracias Casimiro

Con esta instruccion
delete from ET_Inventario -sale el mensaje "Cannot delete rows from external files."

Si quiero borrar la tabla



DROP TABLE ET_Inventario - No me lo permite hacer pues tengo unos triggers activos


Necesito tener un inventario consolidado de dos bases de datos diferentes y que este inventario se pueda consultar en cualquiera de las dos bases de datos


Los datos del inventario estan en cada base de datos en una tabla que "no" es externa INVENTARIO y en esta se realiza la edicion, insercion y borrado de los registros.





Ya solucione el problema utilizando triggers en la tabla INVENTARIO


1. Cuando eliminan un registro inserto en la tabla externa ET_inventario, un registro con la transaccion old.entrada o old.salida pero signo contrario.
2. Cuando modifican inserto dos registros en la tabla externa ET_inventario, los datos antiguos old.entrada u old.salida con signo contrario y el registro nuevo new.entrada o new.salida con el signo real.
3. Cuando insertan se inserta en ET_inventario el registro tal como se digito en la tabla original, new.entrada o new.salida


Despues realizo la consulta realizando la sumatoria para optener el dato consolidado


Hice un procedimiento que me reconstruye la tabla externa con los datos ya sumarizados, lo ejecutan periodicamente, semanal o mensual, el problema que tengo es que no he podido dejar en blanco el archivo de la tabla externa ni borrarlo, el usuario lo hace manualmente


No puedo borrar la tabla por los trigger y tendria que crearlas nuevamente en la base de datos.


Gracias
Responder Con Cita
  #6  
Antiguo 02-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.699
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero no has contestado a mi pregunta

EDITO: ahora veo, sí has contestado
Responder Con Cita
  #7  
Antiguo 03-11-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
NULL
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.598
Poder: 20
Delphius Va camino a la fama
La cuestión es que una tabla externa no está pensada para ser como una tabla más de una base de datos. Sino como una manera de "exportar" información para ser consumida por medios no convencionales o que no requieren de una conexión directa con la base de datos.
Por ejemplo para presentar un resumen de ventas por única vez en un archivo Excel, se puede generar una tabla externa desde una consulta y luego pasar esta información a Excel. De esta manera no se corre el peligro de borrar algún registro o que se modifique algo por accidente.

Ten en cuenta que una tabla externa es un simple archivo, no tiene porqué ni estar pensado para hacer de otra tabla más.

Si lo que buscas es tener la información constantemente actualizada y uniforme, entonces crea una tabla más en la base de datos, que es lo más fácil y recomendable. O bien, crea una segunda base de datos que contenga las tablas que requieras e implementas los mecanismos para "sincronizar" ambas base de datos.

Repito: no puedes pedir a una tabla externa que se comporte como una tabla normal de una base de datos.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 08-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
NULL
 
Registrado: jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Cita:
Empezado por hecospina Ver Mensaje
Casimiro

Gracias por la respuesta, busque sobre el tema y al parecer no se pueden realizar "delete" ni "update" en estas tablas de tipo externas

La tabla externa se puede acceder con el Bloc de Notas de Windows. Ya que es de formtao Texto *.TXT.
Responder Con Cita
  #9  
Antiguo 08-03-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.699
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por bulc Ver Mensaje
La tabla externa se puede acceder con el Bloc de Notas de Windows. Ya que es de formtao Texto *.TXT.
Así es, un fichero de texto.
Responder Con Cita
  #10  
Antiguo 08-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
NULL
 
Registrado: jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Ya para terminar, control total con FireDAC

El Generador ya se puede controlar a gusto del poeta. Con este código:
Código Delphi [-]
// Obtener el xNum actual del Generador:
nGen:=FDConnection1.GenLastAutoGenValue('GEN_FOTO');   // o bien
nGenNext := FDM2.FDConnection1.ExecSQLScalar( 'select gen_id(gen_foto, 0) from rdb$database' );
//  y hacer avanzar el generador y obtener el número.  Con lo cual el Trigger ya no es tan vital.
nGenNext := FDM2.FDConnection1.ExecSQLScalar( 'select gen_id(gen_foto, 1) from rdb$database' );
Creo que puede ser útil. Pero tal vez no esté en el hilo apropiado.
Saludos.
bulc

Última edición por bulc fecha: 08-03-2018 a las 19:16:30.
Responder Con Cita
  #11  
Antiguo 08-03-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.699
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un generador es un número automático incremental, no debería ser editado por nosotros en ningún caso.
Y si hace falta editarlo, entonces es que se está haciendo un mal uso del mismo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trigger Before (Insert,update,delete)? estebanx MS SQL Server 2 25-05-2006 16:58:19
Delete from table dmagui Firebird e Interbase 2 11-08-2005 22:49:39
Error con Update y Delete c748a SQL 4 15-06-2005 16:23:03
table.delete, pero no reduce tamaños tablas jonmendi Conexión con bases de datos 3 19-02-2005 10:34:45
Utilización del EXTERNAL con CREATE TABLE feruiz Firebird e Interbase 4 01-06-2004 08:15:27


La franja horaria es GMT +2. Ahora son las 21:09:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi