Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Postgresql usar sequences bom dia galera, estou re-escrevendo um sistema para o Adianti e agora encontrei um problema, tenho algumas tabelas que usam sequences para gerar o id, no Adianti não estou conseguindo usar elas, não sei como seria dentro do model....
DD
Postgresql usar sequences  
bom dia galera, estou re-escrevendo um sistema para o Adianti e agora encontrei um problema, tenho algumas tabelas que usam sequences para gerar o id, no Adianti não estou conseguindo usar elas, não sei como seria dentro do model.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (3)


NR

Basta alterar nos models a constante IDPOLICY para serial:
  1. <?php
  2. const IDPOLICY =  'serial';
  3. ?>
DD

Nataniel, bom dia,
já estou usando serial no model,

só que a tabela ao ser criada com o id type serial (na verdade serial é um alias para uma sequencia onde o está relacionada ao campo id) funciona certinho, ele adiciona a sequencia.
mas, se quando eu criei a tabela eu não defini como serial e sim usando outra sequencia não atrelada ao campo.
ex: id integer NOT NULL DEFAULT nextval(('seq_id'::text)::regclass),

e por dentro do framework eu não consigo dar o comando
SELECT last_value FROM seq_id

diz que a tabela seq_id não foi definida no model

quando eu dou um insert já com o id (que eu peguei o último e somei um) ele grava na tabela corretamente mas não atualiza a sequencia, o problema ocorre quando em outra rotina que usa a sequencia vai dar duplicate key

acho que a minha única solução é criar as tabelas novamente usando o type como serial e importar os dados.
NR

Pode ter relação com o nome das sequences. Por padrão o nome considerado pelo Adianti é "nometabela_chaveprimaria_seq". Por exemplo, para a tabela cliente e chave primária id teríamos: 'cliente_id_seq'.

Se estiver usando outro padrão, declare a constante SEQUENCE nos seus models com o nome correto:
  1. <?php
  2. class Cliente extends TRecord
  3. {
  4.     const TABLENAME 'cliente';
  5.     const PRIMARYKEY'id';
  6.     const IDPOLICY =  'serial'// {max, serial}
  7.     const SEQUENCE 'nome_sua_sequencia';
  8.     ...
  9. ?>