Enviado em 17/06/2013 - 13:01h
CREATE TABLE agenda ( chave SERIAL NOT NULL, nome VARCHAR(100) NOT NULL, rua VARCHAR(200), numero INT, telefone char(9), PRIMARY KEY(chave) ); -- DROP TABLE ListaInvertida; -- CRIA TABELA listaInvertida -- CREATE TABLE ListaInvertida ( palavra VARCHAR(30), chave INTEGER[] );
CREATE OR REPLACE FUNCTION PopulaListaInvertida() RETURNS trigger AS $$ DECLARE dado VARCHAR; dado2 VARCHAR; existe integer; BEGIN -- unnest CRIA UMA "TABELA" DIVIDINDO O TEXTO PELO DELIMITADOR ESPAÇO -- LOOP PARA O NOME FOR dado IN SELECT unnest(string_to_array(new.nome, ' ')) LOOP existe:=0; SELECT count(*) INTO existe FROM ListaInvertida WHERE palavra=dado; if existe=0 then INSERT INTO ListaInvertida (palavra, chave) VALUES (dado, new.chave); else UPDATE ListaInvertida SET chave=array[chave,new.chave] where palavra=dado; end if; END LOOP; -- LOOP PARA O ENDEREÇO FOR dado2 IN SELECT unnest(string_to_array(new.rua, ' ')) LOOP existe :=0; SELECT count(*) INTO existe FROM ListaInvertida WHERE palavra=dado; IF existe=0 then INSERT INTO ListaInvertida (palavra, chave) VALUES (dado2, new.chave); ELSE UPDATE ListaInvertida SET chave=string_to_array[chave,new.chave] where palavra=dado; END IF; END LOOP; RETURN NEW; END; $$ LANGUAGE 'plpgsql';
Enviado em 17/06/2013 - 13:43h
Bom, estou meio enferrujado em Postgresql, mas veja a sintaxe correta no link abaixo na seção "8.15.4. Modifying Arrays". Se não for a versão corereta do teu PostgreSql, clique na sua versão em cima da página.Enviado em 17/06/2013 - 17:18h
Já tinha lido a documentação, mas ela não fala sobre adicionar valores ao array já existente.CREATE OR REPLACE FUNCTION PopulaListaInvertida() RETURNS trigger AS $$ DECLARE dado VARCHAR; dado2 VARCHAR; existe integer; BEGIN -- unnest CRIA UMA "TABELA" DIVIDINDO O TEXTO PELO DELIMITADOR ESPAÇO -- LOOP PARA O NOME FOR dado IN SELECT unnest(string_to_array(new.nome, ' ')) LOOP existe:=0; SELECT count(*) INTO existe FROM ListaInvertida WHERE palavra=dado; if existe=0 then INSERT INTO ListaInvertida VALUES (dado, ARRAY[new.chave]); else UPDATE ListaInvertida SET chave=chave || new.chave where palavra=dado; end if; END LOOP; -- LOOP PARA O ENDEREÇO FOR dado2 IN SELECT unnest(string_to_array(new.rua, ' ')) LOOP existe:=0; SELECT count(*) INTO existe FROM ListaInvertida WHERE palavra=dado2; IF existe=0 then INSERT INTO ListaInvertida VALUES (dado2, array[new.chave]); ELSE UPDATE ListaInvertida SET chave=chave || new.chave where palavra=dado2; END IF; END LOOP; RETURN NEW; END; $$ LANGUAGE 'plpgsql';
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
instalar o Linux em computadores Acer novos (1)