Magno Lima wrote:

> Para fazer no "braço" eu iria inserir o nome do novo grupo na tabela, 
> executar um novo sql e pegar o valor do ID, preencher a tabela itens com 
> este ID. Rolling Eyes e ai, qual é a técnica real para isto?
> 
Um bloco de transação. Sem ele fica difícil você garantir a atomicidade 
da operação.

euler=# \d grupos
                                Tabela "public.grupos"
  Coluna |         Tipo          |                   Modificadores 

--------+-----------------------+----------------------------------------------------
  a      | integer               | not null default 
nextval('grupos_a_seq'::regclass)
  b      | character varying(10) |
Índices:
     "grupos_pkey" PRIMARY KEY, btree (a)

euler=# \d itens
                                Tabela "public.itens"
  Coluna |         Tipo          |                   Modificadores 

--------+-----------------------+---------------------------------------------------
  a      | integer               | not null default 
nextval('itens_a_seq'::regclass)
  b      | character varying(10) |
  c      | integer               |
Índices:
     "itens_pkey" PRIMARY KEY, btree (a)
Restrições de chave estrangeira:
     "itens_c_fkey" FOREIGN KEY (c) REFERENCES grupos(a)

euler=# begin;
BEGIN
euler=# insert into grupos (b) values('foo');
INSERT 0 1
euler=# select currval('grupos_a_seq');
  currval
---------
        1
(1 registro)

euler=# insert into itens (b, c) values('bar', 1);
INSERT 0 1
euler=# insert into itens (b, c) values('baz', 1);
INSERT 0 1
euler=# commit;
COMMIT


> Obrigado.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


-- 
   Euler Taveira de Oliveira
   http://www.timbira.com/

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a