ScriptCase Forum

Códigos de exemplo => Formulário => Tópico iniciado por: Cezar Moniz em Maio 13, 2017, 03:29:28 pm

Título: RESOLVIDO - Bloquear registro para alterar valor.
Enviado por: Cezar Moniz em Maio 13, 2017, 03:29:28 pm
Prezados e Prezadas.

Sei que o tema já possa ter sido comentado anteriormente no Fórum, mas não achei nada sobre esta matéria. Me perdoem se estarei sendo repetitivo.

Tenho uma tabela PARAMETROS, onde guardo algumas informações que preciso. Um dos campo é NR_CAIXA.
Pois bem, eu preciso bloquear este campo que tem um valor numérico, somar 1 e atualizar com o novo valor. Mas enquanto faço essa operação outro usuário não poderá faze-lo, pois iria dar problemas com numero da caixa igual.

Pergunto aos mais experientes, se seria melhor fazer através de um Trigguer ou se o Scriptcase tem um comando Tipo Lock() e Unlock() para controle deste update.

O banco é o Firebird.

Podem me dar uma orientação?

Obrigado
Título: Re:Bloquear registro para alterar valor.
Enviado por: Haroldo em Maio 13, 2017, 08:17:30 pm
https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html
Título: Re:Bloquear registro para alterar valor.
Enviado por: paulomarcelo em Maio 13, 2017, 11:58:51 pm

Acho que você pode usar este recurso:
IN AUTONOMOUS TRANSACTION
seguem os links:
https://firebirdsql.org/refdocs/langrefupd25-psql-autonomous-trans.html
https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-psql-auton.html
http://asfernandes.blogspot.com.br/2014/12/artigo-novidades-do-firebird-25.html
Título: Re:Bloquear registro para alterar valor.
Enviado por: Jailton em Maio 14, 2017, 12:37:29 am
Se for usar o Firebird 3.0, já tem o Recurso:
create table objects (
id integer generated by default as identity primary key,
name varchar(15)
);
insert into objects (name) values (‘Table’);
insert into objects (name) values (‘Book’);
insert into objects (id, name) values (10, ‘Computer’);
select * from objects;
ID NAME
============ ===============
1 Table
2 Book
10 Computer

Agora nas versões anteriores usar:
https://www.kinghost.com.br/wiki/artigo/como-criar-autoincrement-no-firebird/
Título: Resolvido:Bloquear registro para alterar valor.
Enviado por: Cezar Moniz em Maio 15, 2017, 07:49:53 am
Prezados.

Obrigado pelo retorno.

Consegui resolver lendo um artigo do Firebird, onde ele junta o Generator. Seque a solucao para quem precisar.


create trigger biu_books
  active before insert or update position 3
  on books
as
begin
  if (new.id is null)
    then new.id = next value for gen_bookids;
end



Um grande abraço a todos.