Não sou muito bom com PostgreSQL + Python no Windows, meus ambientes com
Python são todos no Linux.

Teria que conferir com alguém da lista.

Em 11 de novembro de 2011 10:16, Marllos <[email protected]>escreveu:

> Oi Daniel, muito grato pela sua boa vontade. É isso mesmo que eu preciso,
> só que eu não estou conseguindo dar o comando:
>
> CREATE LANGUAGE plpythonu;
>
> Sem esse comando recebo a msg que a linguagem python nao existe, mas ao
> der esse comando recebo a msg:
>
> [WARNING  ] CREATE LANGUAGE plpythonu
>             ERRO:  não pôde carregar biblioteca "C:/Arquivos de
> programas/PostgreSQL/8.4/lib/plpython.dll": unknown error 126
>
> So que a dll está presente no local indicado na msg
>
> Em 10 de novembro de 2011 19:23, Daniel Cristian Cruz <
> [email protected]> escreveu:
>
>> Marllos,
>>
>> Não resisti, montei a função em plpython:
>>
>> CREATE EXTENSION plpythonu;
>>
>> CREATE OR REPLACE FUNCTION trigger_bala() RETURNS trigger LANGUAGE
>> plpythonu AS $$
>>   import random
>>   rv = plpy.execute("SELECT attname FROM pg_attribute JOIN pg_constraint
>> ON pg_constraint.conrelid = pg_attribute.attrelid WHERE conkey =
>> ARRAY[attnum] AND contype = 'p' AND pg_attribute.attrelid = '%s'::regclass"
>> % TD["table_name"], 1)
>>   TD["new"][rv[0]["attname"]] = random.random()
>>   return "MODIFY"
>> $$;
>>
>> CREATE TABLE teste (
>>
>>  a float primary key
>> );
>>
>> CREATE TRIGGER teste_bala BEFORE INSERT ON teste FOR EACH ROW EXECUTE
>> PROCEDURE trigger_bala();
>>
>> INSERT INTO teste (a) VALUES (DEFAULT) RETURNING *;
>>        a
>> ----------------
>>  0.345787825955
>> (1 row)
>>
>> Em 10 de novembro de 2011 17:43, Marllos <[email protected]>escreveu:
>>
>>> Deixa eu explicar melhor, tenho um sistema asp+firebird, que estou
>>> convertendo para php + firebird.
>>> Com o objetos pdo do php, o mesmo codigo pode acessar uma base
>>> equivalente em qualquer outro banco de dados (que o pdo dá suporte e são
>>> muitos bancos, incluindo o postgresql).
>>>
>>> Então estou tentando reproduzir fielmente a minha base de dados do
>>> firebird para o postgresql e isso é mais um exercicio de aprendizado com o
>>> postgresql. Já a conversão de asp+firebird para php não é aprendizado, é
>>> trabalho mesmo.
>>>
>>>
>>> Em 10 de novembro de 2011 16:57, Danilo Silva <
>>> [email protected]> escreveu:
>>>
>>>> Por curiosidade, vc quer gerar um valor aleatório ( ou outro valor
>>>> qualquer) para cada pk das tabelas? Se for isso, não seria mais fácil
>>>> utilizar uma sequence e atribuir esta sequence como valor default das pks?
>>>>
>>>> Danilo
>>>>
>>>> Em 10 de novembro de 2011 16:29, Juliano Benvenuto Piovezan <
>>>> [email protected]> escreveu:
>>>>
>>>> 2011/11/10 Marllos <[email protected]>
>>>>> >
>>>>> > Foi mal amigo....
>>>>> > Na verdade eu quero é atribuir um valor a chave primária, mas
>>>>> fazendo refencia dinamica a chave.
>>>>> >
>>>>>
>>>>> Uma coisa que posso ter passado na discussão, mas sua chave é simples
>>>>> ou composta?
>>>>>
>>>>> Em plpgsql você realmente não conseguirá isso, a não ser que você
>>>>> utilize o mesmo nome do campo em todas as tabelas. Como os nomes são
>>>>> diferentes, como você especificou, apenas com alguma outra pl mesmo,
>>>>> como pltcl. Segue exemplo:
>>>>>
>>>>> CREATE OR REPLACE FUNCTION "fun_trg" (
>>>>> )
>>>>> RETURNS trigger AS
>>>>> $body$
>>>>> spi_exec -count 1 "SELECT a.attname as col
>>>>>                    FROM pg_class c,
>>>>>                         pg_attribute a,
>>>>>                         pg_index i
>>>>>                    WHERE c.oid = i.indrelid AND
>>>>>                          a.attrelid = i.indexrelid AND
>>>>>                          not a.attisdropped AND
>>>>>                          a.attnum > 0 AND
>>>>>                          i.indisprimary AND
>>>>>                          c.oid = '$TG_relid'"
>>>>> spi_exec -count 1 "SELECT uuid_generate_v4() as c"
>>>>> set NEW($col) $c
>>>>> return [array get NEW]
>>>>> $body$
>>>>> LANGUAGE 'pltcl'
>>>>> VOLATILE
>>>>> CALLED ON NULL INPUT
>>>>> SECURITY INVOKER
>>>>> COST 100;
>>>>>
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> Daniel Cristian Cruz
>> クルズ クリスチアン ダニエル
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Daniel Cristian Cruz
クルズ クリスチアン ダニエル
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a