Club Delphi  
    Paypal   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 18-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Ok correcto ese libro si me pasaste el link, lo baje y lo leí y lo que me mostraste eso ya lo implemente pero ahora dime una cosa a ese ejemplo que pusiste se le puede crear una vista y poner el siguiente trigger de esta forma

Código SQL [-]
create view clienteyciudad(_id, _nombre) as 
select cli.nombre, ciu.nombre from tbclientes cli inner join tbciudades ciu on cli.id_ciudad=ciu.id

Código SQL [-]
CREATE TRIGGER tg_Cte FOR clienteyciudad
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 
AS 
BEGIN 
 INSERT INTO tbclientes(id, nombre) VALUES (:_id, :_nombre);
END


Como puedes ver lo que estoy intentando hacer es que a la vez que ejecuto una vista entonces un trigger sirve para agregar un nuevo cliente obviamente en el ejemplo faltarían los datos de las otras columnas de la tabla.

Gracias por tu ayuda.
Responder Con Cita
  #2  
Antiguo 18-12-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Edchar Ver Mensaje
Ok correcto ese libro si me pasaste el link, lo baje y lo leí y lo que me mostraste eso ya lo implemente
Amigo, permite que dude que hayas leido el libro.

Además es fácil, en lugar de tanto tiempo que estás perdiendo en preguntar.. ¿por qué no lo pruebas?
No tardas ni un minuto en abrir ibexpert, flamerobin o el que uses, buscas una vista y le das a "create trigger"....
Vaya, que no aparece 'create trigger' en las vistas... ¿será un olvido o será porque no se puede?

Una vista es... bueno, lo que ya te he explicado antes

pd. Ahora bien, que a lo mejor se puede de alguna forma, puede ser, pero yo no recuerdo haberlo hecho nunca.
Responder Con Cita
  #3  
Antiguo 18-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Ok gracias, ya voy entendiendo un poco mas.

Osea que en vez de buscar, aprenda a usar ibexpert u algo así, para aprender como funcionan los códigos en la base de datos Firebird.

Y por otra parte lo que te entiendo es que lo que yo estoy pensando que es de agregar mediante una vista eso no es posible, voy a a seguir tu recomendación de aprender a usar ibexpert.

Por otro lado no entiendo entonces por que se puede usar un trigger con una vista

Saludos
Responder Con Cita
  #4  
Antiguo 18-12-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Edchar Ver Mensaje
Por otro lado no entiendo entonces por que se puede usar un trigger con una vista
¿Puedes poner aquí algún código o enlace a eso que dices?, a ver si es que no me entero de lo que buscas.
Responder Con Cita
  #5  
Antiguo 19-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Gracias por tu ayuda.
Este es uno de los ejemplos que he visto aquí esta la creación de la vista.

Código SQL [-]
CREATE VIEW CHILD_VIEW
(
  ID,
  PARENT_ID,
  OTHER_STUFF,
  GRANDPARENT_ID
)
AS
SELECT 
  C.ID,
  C.PARENT_ID,
  C.OTHER_STUFF,
  C.GRANDPARENT_ID
FROM CHILD C
join PARENT P on P.ID = C.PARENT_ID;

Y aquí esta la creación del trigger.

Código SQL [-]
CREATE TRIGGER CHILD_VIEW_Save FOR CHILD_VIEW
ACTIVE BEFORE INSERT OR UPDATE POSITION 10
AS
BEGIN
  IF(NEW.ID IS NULL)THEN NEW.ID = GEN_ID(GEN_Child, 1);
  UPDATE OR INSERT INTO CHILD (ID, PARENT_ID, OTHER_STUFF, GRANDPARENT_ID)
            VALUES(NEW.ID, NEW.PARENT_ID, NEW.OTHER_STUFF, NEW.GRANDPARENT_ID);
END

Y es aquí donde veo el UPDATE OR INSERT INTO, Por eso mi punto es que aquí se usa un trigger que agrega registros usando una vista de echo las variables que usa son las de la vista para agregarlos a la tabla CHILD y en FOR CHILD_VIEW del trigger esta el nombre de la vista.

Gracias saludos.
Responder Con Cita
  #6  
Antiguo 19-12-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Ah, bien, pero el insert es a una tabla, pensé que te referías hacer un insert a más de una tabla con una sola sentencia.

Sí, bueno, ahí puedes poner lo que quieras, pero vamos, que sigo sin entender lo que quieres saber, ¿crear un trigger que haga un insert?, hombre, sí, se puede, tú mismo has puesto un código de ejemplo.
Por eso la pregunta que te hice desde primera hora es: ¿exactamente qué necesitas?
Si sólo es por saber eso, no tienes más que leer el libro que te he indicado.
Ah, bueno, que ya lo habías leido, no me acordaba.
Responder Con Cita
  #7  
Antiguo 19-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Ok gracias, pero entonces según te entiendo si se puede agregar datos así que seguiré aprendiendo y como dices leyendo.

Saludos
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
Crear vista en Firebird Caral Firebird e Interbase 7 08-01-2008 20:20:25
Como averiguo que triggers hay en una base de datos JULIPO MySQL 6 31-07-2007 06:23:36
Problemas al crear triggers nenufer Conexión con bases de datos 1 16-05-2006 13:49:58
Introducir datos en un Blob desde un Triggers islu Firebird e Interbase 1 28-07-2005 16:10:52
triggers y refresh de datos... User_baja1 Varios 1 28-04-2005 19:06:44


La franja horaria es GMT +2. Ahora son las 00:55:26.


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