2008/2/7 sergio <[EMAIL PROTECTED]>:
>
>
> Bom Dia.
>
> Quando acrescento um campo novo em uma tabela já existente, ele passa a ser
> o último campo. Tem como eu colocá-lo em 3º por exemplo?

Altere o dicionario de dados, a seu proprio risco. Aqui vai como, mas
nao faco garantia nenhuma sobre a integridade dos seus dados ao mexer
assim com o dicionario de dados.

test=# \d foobar
           Table "pg_temp_1.foobar"
  Column  |         Type          | Modifiers
----------+-----------------------+-----------
 id       | integer               |
 segunda  | character varying(50) |
 terceira | character varying(50) |


teste=# SELECT c.oid,
teste-#   n.nspname,
teste-#   c.relname
teste-# FROM pg_catalog.pg_class c
teste-#      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
teste-# WHERE c.relname ~ '^(foobar)$' -- Nome da minha tabela (foobar) aqui
teste-#   AND pg_catalog.pg_table_is_visible(c.oid)
teste-# ORDER BY 2, 3;
   oid   |  nspname  | relname
---------+-----------+---------
 7002157 | pg_temp_1 | foobar
(1 row)

teste=# select attrelid, attname, attnum from pg_catalog.pg_attribute
where attrelid = '7002157' AND attnum > 0 AND NOT attisdropped;

 attrelid | attname  | attnum
----------+----------+--------
  7002157 | id       |      1
  7002157 | segunda  |      2
  7002157 | terceira |      3
(3 rows)

teste=# BEGIN;
BEGIN
teste=# update pg_catalog.pg_attribute set attnum = '4' where attname
= 'terceira' and attrelid = '7002157'; -- coloque um numero maior que
o de outras colunas, pois ha' uma constraint
UPDATE 1
teste=# update pg_catalog.pg_attribute set attnum = '3' where attname
= 'segunda' and attrelid = '7002157';
UPDATE 1
teste=# update pg_catalog.pg_attribute set attnum = '2' where attname
= 'terceira' and attrelid = '7002157';
UPDATE 1
teste=# commit;
COMMIT

teste=# \d foobar
           Table "pg_temp_1.foobar"
  Column  |         Type          | Modifiers
----------+-----------------------+-----------
 id       | integer               |
 terceira | character varying(50) |
 segunda  | character varying(50) |
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a