Em 05/12/08, Luiz Henrique<[EMAIL PROTECTED]> escreveu: > Bom dia Osvaldo, > > Utilize da seguinte forma: (deve funcionar) > > SELECT > pa.attname > FROM > pg_attribute pa > where > pa.attrelid = (select pc.oid from pg_class pc where pc.relname = > 'teste') > and > pa.attnum > 0 > and > array[pa.attnum] <> ALL (SELECT pco.conkey FROM pg_constraint pco > WHERE pco.conrelid = pa.attrelid AND pco.contype = 'p'); >
Olá Luiz, Obrigado. Realmente dessa forma funciona. Posso até mudar o operador de "<> ALL" para "NOT(... <@...)" (não estar contido). Contudo ainda não consegui entender por que não funciona se o comando abaixo funciona: bdteste=# SELECT 3::smallint <> ALL (ARRAY[2, 3, 4]::smallint[]); ?column? ---------- f (1 registro) Continuei a testar e descobri que se explicitar que é um array: pa.attnum <> ALL ((SELECT pco.conkey FROM pg_constraint pco WHERE pco.conrelid = pa.attrelid AND pco.contype = 'p')::smallint[]) funciona! Me parece redundante pois, conforme a mensagem de erro já diz, ele sabe que é um smallint[]. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
