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 Temas de Hoy

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
Smile Crear una Vista que agregue datos con triggers

Hola a todos de nuevo, quizás piensen que soy un necio y que debo de buscar y leer, pero resulta que ya lo he hecho y por mas que gasto tiempo leyendo en la red y viendo ejemplos no logro crear una vista que mediante un trigger agregue datos, aquí pongo lo que hasta el momento he hecho.

Creo la tabla así:
Código SQL [-]
CREATE TABLE CLIENT_TBL (id ID_CAT, cedcte CED_CTE, name FIRST_NAME,  CONSTRAINT PK_CTE PRIMARY KEY (cedcte))


Ahora tengo la vista de esta manera:
Código SQL [-]
CREATE VIEW VIEW_CTEADD(CED_CTE, NOMBRE)  AS SELECT cedcte, name FROM CLIENT_TBL


Y el ttrigger lo tengo así
Código SQL [-]
CREATE TRIGGER TG_CTEADDVIEW FOR VIEW_CTEADD 
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 
AS 
BEGIN 
  NEW.cedcte = :CED_CTE; 
  NEW.name = :NOMBRE; 
END


Lo he intentado poniendo en el trigger
Código SQL [-]
INSERT INTO CLIENT_TBL(cedcte, name) VALUES (:CED_CTE, :NOMBRE);


Pero cuando intento agregar el trigger me da diferentes errores con el nombre de campo CED_CTE o en el nombre de la tabla CLIENT_TBL.

Por favor necesito que alguien me corriga este codigo y me diga donde tengo el error, para poder probarlo.

Muchas Gracias a todos, aprecio mucho el tiempo que dedican a brindarme una mano

Saludos

Última edición por ecfisa fecha: 18-12-2012 a las 05:48:11. Razón: corregir problema etiquetas (modo WYSIWYG)
Responder Con Cita
  #2  
Antiguo 18-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, para empezar, ¿tú qué quieres hacer?, y no contestes: "quiero crear una vista que agruegue datos con triggers", sino exactamente qué quieres conseguir, explicado con palabras.
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
Primero lo que quiero es aprender como funciona FireBird, y por lo que he leído en todos los links que uds. me han dado es que puedo crear una vista que puede agregar, actualizar o borrar registro a la vez que esta se ejecuta.

Lo que entiendo es que las vistas sirven como para extraer registros, ya lo hice con una y es esta, que los datos los paso a un DataGrid hasta aquí esta bien.
Código SQL [-]
CREATE VIEW TBL_CTE
AS
SELECT * FROM CLIENT_TBL

Entonces ahora lo que quiero es aprender la otra parte, que me imagino que es que mediante una vista se puede agregar datos y generar la consulta que me presente todos los datos incluido los que acabo de introducir.

Bien ¿Estoy dando palos de ciego y la vista no tiene ese propósito? entonces ¿para que tiene la capacidad de agregar actualizar y borrar?

Agradezco que me tengan paciencia pero al iniciarme en esto tipo de bases de datos uno inicia de cero
y solo con la ayuda de los que saben como Uds uno sale adelante.

Ayúdame con este código por favor, Lo aprecio mucho.

Saludos

Última edición por Edchar fecha: 18-12-2012 a las 19:19:43.
Responder Con Cita
  #4  
Antiguo 18-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No recuerdo si te he recomendado este libro: la cara oculta de delphi. Es esencial, primordial, léelo.

Cita:
Empezado por Edchar Ver Mensaje
por lo que he leído en todos los links que uds. me han dado es que puedo crear una vista que puede agregar, actualizar o borrar registro a la vez que esta se ejecuta.
¿En qué links?.
Además es que no se entiende qué quieres decir con esa frase: "una vista que puede agregar, actualizar o borrar registro a la vez que esta se ejecuta"

Cita:
Empezado por Edchar
Entonces ahora lo que quiero es aprender...
El libro indicado es básico, tienes que leerlo... sí o sí.

Cita:
Empezado por Edchar Ver Mensaje
Bien ¿Estoy dando palos de ciego y la vista no tiene ese propósito? entonces ¿para que tiene la capacidad de agregar actualizar y borrar?
En el libro que te aconsejo dice:

Cita:
Creación de vistas
Uno de los recursos más potentes de SQL, y de las bases de datos relacionales en
general, es la posibilidad de definir tablas “virtuales” a partir de los datos almacena-
dos en tablas “físicas”. Para definir una de estas tablas virtuales hay que definir qué
operaciones relacionales se aplican a qué tablas bases. Este tipo de tabla recibe el
nombre de vista.
Por eso insisto, para no seguir perdido como estás y hacer preguntas sin sentido, lee.

Te lo digo como un consejo, ya que quieres aprender, no hay otra forma que empezar con un libro. Además este libro es muy ameno.
Responder Con Cita
  #5  
Antiguo 18-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para que te hagas una idea, tenemos 2 tablas y sus respectivos campos.

tbCiudades ( id, nombre )
tbClientes ( id, nombre, domicilio, telefono, id_ciudad )


En la tabla ciudades tendremos algo así:

tbCiudades
1...Madrid
2...Taiwan
3...Londres

tbClientes
1...Juanito Campos...calle 1.....3838383...1
2...Shin Lu..........jekjrfuso...4753273...2
3...Jhon Smith.......avda 3......6753222...3
4...Pepe García......calle 33....3743833...1

Ahora, por algún requerimiento de nuestro software, por ejemplo para usarlo en informes/reportes, resulta que necesitamos muy a menudo tener siempre los datos de: nombre del cliente y su ciudad.
En lugar de hacer contínuos selects, ¿qué hacemos para ahorrarnos trabajo?, creamos una vista.

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

Esto nos devuelve:
Juanito Campos...Madrid
Shin Lu..........Taiwan
Jhon Smnith......Londres
Pepe García......Madrid


Es una especie de "tabla virtual".

pd. Lee el libro

Última edición por Casimiro Notevi fecha: 18-12-2012 a las 20:08:14.
Responder Con Cita
  #6  
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
Respuesta



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 08:24:56.


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