Re: Re-pregunta Hacer upper() y trim() automaticos

Lists: pgsql-es-ayuda
From: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Hacer upper() y trim() automaticos
Date: 2005-05-09 17:40:52
Message-ID: 20050509174053.7944.qmail@web51608.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola amigos, otra vez aqui.
Tengo un problema, necesito hacer los siguiente:
Una funcion pl/psql que ligada a un trigger me permita hacer upper y
trim a todas las cadenas de cualquier tabla, me explico.
Tengo una base de datos con n tablas, todas con n atributos, entonces
al momento de hacer el insert o el update la funcion ejecutada mediante
este trigger la haga upper y trim a todas los atributos que sean char,
vachar, text.
Estuve intentando hacer algo por el estilo pero en algo estoy fallando
y por eso recurro a ustedes.
Gracias por su Ayuda

---------------------------------
Do You Yahoo!?
Yahoo! Net: La mejor conexión a internet y 25MB extra a tu correo por $100 al mes.


From: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>
To: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Hacer upper() y trim() automaticos
Date: 2005-05-09 18:00:38
Message-ID: m3r7gg9t4p.fsf@conexa.fciencias.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

"Victor H. Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx> writes:

> Estuve intentando hacer algo por el estilo pero en algo estoy fallando
> y por eso recurro a ustedes.

Aguarda un momento, dejame sintonizo mi bolita mágica, uhm, no, creo
que hay mucha interferencia, nomás no logro captar nada. Ni modo,
tendremos que hacerlo de la forma tradicional: ¿podrías mandarnos más
detalles de que esta fallando?

Saludos,
Manuel.


From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Hacer upper() y trim() automaticos
Date: 2005-05-09 19:37:49
Message-ID: c2d9e70e050509123761170bab@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 5/9/05, Victor H. Pinto del Carpio <kingoflinuxlake(at)yahoo(dot)com(dot)mx> wrote:
> Hola amigos, otra vez aqui.
> Tengo un problema, necesito hacer los siguiente:
> Una funcion pl/psql que ligada a un trigger me permita hacer upper y
> trim a todas las cadenas de cualquier tabla, me explico.
> Tengo una base de datos con n tablas, todas con n atributos, entonces
> al momento de hacer el insert o el update la funcion ejecutada mediante
> este trigger la haga upper y trim a todas los atributos que sean char,
> vachar, text.
> Estuve intentando hacer algo por el estilo pero en algo estoy fallando
> y por eso recurro a ustedes.
> Gracias por su Ayuda
>
Y cual es el problema con hacerlo cada vez que insertas o actualizas
en la tabla???

update tabla set campo = upper(trim(valor_campo))
where condiciones

NOTA: Trim no estoy seguro que funcione asi, la verdad no mire el
manual pero la idea es esa.

NOTA2: Lo de las mayusculas lo puedes manejar desde el cliente
controlando solo digiten mayusculas o que al digitar una letra la
convierta a mayusculas.

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)


From: Milton inostroza <minoztro(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Fwd: Hacer upper() y trim() automaticos
Date: 2005-05-10 05:39:06
Message-ID: 172699c50505092239197d5e7e@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

podías en tu código al momento de ejecutar la consulta sql realizar a
las cadenas un upper() como por ejemplo:

sql ="""
INSERT INTO afp
VALUES ('%s','%s','%s')
"""%(
self.entryNombre.get_text().upper(),
self.entryRazonSocial.get_text().upper(),
self.entryPorcentaje.get_text(),
)
self.cursor.execute(sql)
self.padre.cnx.commit()

espero ayudarte, saludos

--
Milton Inostroza Aguilera
Encargado de Auspicios y Patrocinios - 6to. Encuentro Nacional de Linux
Desarrollador de RemuneX (sistema de remuneraciones amparado bajo GPL)


From: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
To: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>
Cc: Lista de Correos de PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re-pregunta Hacer upper() y trim() automaticos
Date: 2005-05-11 14:13:49
Message-ID: 20050511141349.18584.qmail@web51601.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola amigos.
Hare mejor mi consulta:
Tengo la relacion:
create table categorias(
idcategoria int primary key,
nombrecategoria varchar(50),
descripcion text);
Tengo esta funcion:
create or replace function insertar() returns trigger as
$body$
declare
tabla record;
tabla_texto text;
nombre_columna record;
nombre_columna_texto text;
tipo_columna text;

begin
for tabla in select c.table_name from information_schema.columns c where c.table_Schema = 'public' group by c.table_name order by c.table_name loop
tabla_texto :=tabla;
for nombre_columna in select a.column_name from information_schema.columns a where a.table_Schema = 'public' and a.table_name = tabla_texto loop
nombre_columna_texto :=nombre_columna;
select b.udt_name into tipo_columna from information_schema.columns b where b.table_Schema = 'public' and b.column_name = nombre_columna and b.table_name = tabla_texto;
if tipo_columna = 'varchar' then
NEW.nombre_columna_texto := upper(trim(nombre_columna));
else
if tipo_columna = 'text' then
NEW.nombre_columna_texto := upper(trim(nombre_columna));
else
NEW.nombre_columna_texto := nombre_columna;
end if;
end if;
end loop;
end loop;
return NEW;
end;
$body$
language 'plpgsql';

este trigger

create trigger insert_tupla
before insert or update on categorias
for each row execute procedure insertar();
y ejecuto este comando
insert into categorias idcategoria,nombrecategoria,descripcion values(1,'Tacos','Sin picante')
supuestamente cada vez que ingrese o actualice una tupla como la del insert anterior, el trigger dispara la funcion y esta ubicará todos los atributos de tipo varchar o text y les aplica upper() y trim(), pero a la hora de ejecutarla no funciona, simplemente agrega la tupla sin ninguna modificacion.
Donde estoy fallando?

Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx> escribió:
"Victor H. Pinto del Carpio" writes:

> Estuve intentando hacer algo por el estilo pero en algo estoy fallando
> y por eso recurro a ustedes.

Aguarda un momento, dejame sintonizo mi bolita mágica, uhm, no, creo
que hay mucha interferencia, nomás no logro captar nada. Ni modo,
tendremos que hacerlo de la forma tradicional: ¿podrías mandarnos más
detalles de que esta fallando?

Saludos,
Manuel.

---------------------------(fin del mensaje)---------------------------
TIP 1: para suscribirte y desuscribirte, escribe a majordomo(at)postgresql(dot)org

VICTOR H. PINTO DEL CARPIO
JEFE DE DESARROLLO
____________________________________________
TRHEX S.R.L.

---------------------------------
Do You Yahoo!?
Yahoo! Net: La mejor conexión a internet y 25MB extra a tu correo por $100 al mes.


From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
Cc: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>, Lista de Correos de PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Re-pregunta Hacer upper() y trim() automaticos
Date: 2005-05-11 15:05:02
Message-ID: 20050511150502.GA8508@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Wed, May 11, 2005 at 09:13:49AM -0500, Victor H. Pinto del Carpio wrote:

> create trigger insert_tupla
> before insert or update on categorias
> for each row execute procedure insertar();
> y ejecuto este comando
> insert into categorias idcategoria,nombrecategoria,descripcion
> values(1,'Tacos','Sin picante') supuestamente cada vez que ingrese o
> actualice una tupla como la del insert anterior, el trigger dispara la
> funcion y esta ubicará todos los atributos de tipo varchar o text y
> les aplica upper() y trim(), pero a la hora de ejecutarla no funciona,
> simplemente agrega la tupla sin ninguna modificacion.
> Donde estoy fallando?

Hum, no puedes usar nombres de campos o tablas dinamicos en plpgsql.

Hay un ejemplo para hacer esto en pl/tcl, mira en www.varlena.com ->
general bits -> edicion 47, ultimo articulo.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"Cuando miro a alguien, más me atrae cómo cambia que quién es" (J. Binoche)


From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: "Victor H(dot) Pinto del Carpio" <kingoflinuxlake(at)yahoo(dot)com(dot)mx>
Cc: Lista de Correos de PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Re-pregunta Hacer upper() y trim() automaticos
Date: 2005-05-11 15:07:04
Message-ID: 42821F98.7020907@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor H. Pinto del Carpio escribió:
> Hola amigos.
...
> nombre_columna_texto text;
....
> NEW.nombre_columna_texto := nombre_columna;
.....
> Donde estoy fallando?

Me temo que plpgsql no permite utilizar una variable como nombre de
columna, para eso tendrás que utilizar pltcl, plpython, plperl ó C
(no se si hay alguno mas).

Saludos,

--
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************