Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

trigger

Estas en el tema de trigger en el foro de PostgreSQL en Foros del Web. Hola buenas tengo unos trigger que crear y la veerdad no se mucho la sintaxis de plpgsql, dejo el codigo CREATE OR REPLACE FUNCTION ins_clientes() ...
  #1 (permalink)  
Antiguo 24/06/2010, 12:10
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 11 meses
Puntos: 1
trigger

Hola buenas tengo unos trigger que crear y la veerdad no se mucho la sintaxis de plpgsql, dejo el codigo


CREATE OR REPLACE FUNCTION ins_clientes() RETURNS TRIGGER AS $BODY$
BEGIN
NEW.nombre := upper(new.nombre);
new.giro := upper(new.giro);
if new.tel_fono <= 0 then
raise exception "telefono menor que cero";
end if;
new.fecha_ingreso := NOW;
RETURN NEW;
END;
$BODY$
LANGUAJE 'plpgsql' VOLATILE
CAST 100;

CREATE TRIGGER tri_ins_clientes BEFORE INSERT ON clientes FOR EACH ROW EXECUTE PROCEDURE ins_clientes()


la verdadd no se si esta bien de hecho me da error, prefiero hacer etoe n oracle pero estoy trabajdno con postgres
tengo mi tabla y quiero llenar varios campos como se ve en el codigo
  #2 (permalink)  
Antiguo 24/06/2010, 12:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: trigger

Lo tienes casi perfecto.

en la asignación de la fecha debe ser con NOW(), no es LANGUAJE sino LANGUAGE, las comillas del mensaje de error deben ser comillas simples y no dobles y por ultimo, no es CAST sino COST. (Aunque esta la puedes omitir.)
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION ins_clientes() RETURNS TRIGGER AS $BODY$
  2. BEGIN
  3. NEW.nombre := UPPER(NEW.nombre);
  4. NEW.giro := UPPER(NEW.giro);
  5. IF NEW.tel_fono <= 0 THEN
  6. raise exception 'telefono menor que cero';
  7. END IF;
  8. NEW.fecha_ingreso := NOW();
  9. RETURN NEW;
  10. END;
  11. $BODY$
  12. LANGUAGE 'plpgsql' VOLATILE;


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 24/06/2010 a las 15:55
  #3 (permalink)  
Antiguo 24/06/2010, 13:11
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: trigger

gracias por tu respuesta, ya que me sirve demasiado por que estoy con la tesis y como siempre hemos ocupado ORACLE para trabajar con BD decidimos ocupar una herramienta libre
  #4 (permalink)  
Antiguo 24/06/2010, 15:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: trigger

Yo estoy en el proceso inverso.... de postgresql a oracle

Pero creeme que son muy parecidos. el cambio no ha sido tan duro.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 24/06/2010, 22:25
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: trigger

en oracle es mas facil con design editor es solo crear lo que va dentro del begin y listo
ademas nunca habia creado un trigger por consola y agregando tanta sintaxis, pero uno nunca para de aprender

Etiquetas: trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:01.