Fórum Travar Registros no IB #43887
27/04/2004
0
mostro todos os registros em uma pesquisa para os usuarios ´A´ e ´B´.
O usuario ´A´ quer trabalhar a NF nro 10, e pega o registro para trabalhar.
No Oracle eu uso
CODE
SELECT * FROM TB_NF WHERE NOTA = 10 FOR UPDATE NO WAIT
para travar o registro para o usuario ´A´.
O usuario ´´B´ quer trabalhar também a NF nro 10, e tenta pegar o registro para trabalhar, no Oracle eu sei que se o usuario ´A´ está trabalhando com o comando
CODE
SELECT * FROM TB_NF WHERE NOTA = 10 FOR UPDATE NO WAIT
Se eu não conseguir dar um ´Lock´ travar o registro é porque ele esta em uso.
Gostaria se é possível travar apenas um registro para uso no Interbase.
Entendeu?
No help do SQL do interbase existe o comando NO WAIT porém pesquisando na net encontrei em algumas apostilas que o IB nao trava os registros.
A maneira mais fácil que conheço é tratando os registros por TAG(marca).
Ex.:
O usuario ´A´ quer trabalhar a NF nro 10, e pega o registro para trabalhar.
Então dou um UPDATE no campo TAG para 1.
O usuario ´´B´ quer trabalhar também a NF nro 10, e tenta pegar o registro para trabalhar.
Então verifico na tabela se a TAG do registro está em 0, se não o mesmo está em uso.
Mas isso é muito usado em Paradox, e acho que um banco legal como o Ib deveria ter esse recurso.
Obs.: Estarei testando o Firebird pois em alguns sites dizem que a versão 1.5 tem o comando que eu quero ´WHIT NO WAIT´
Obrigado a todos pela colaboração!!
Bolomaster
Curtir tópico
+ 0Posts
01/06/2004
Jacson
Este post parece a copia de uma questão minha do scriptbrasil/forum/delphi e kylix
:oops:
abraços
Gostei + 0
01/06/2004
Afarias
a opção WAIT ou NO_WAIT é da transação.
T+
Gostei + 0
02/06/2004
Bolomaster
abraços
Gostei + 0
02/06/2004
Jacson
seu de sua boa intenção, e sei que vc como moderador no scriptbrasil tambem já respondeu muito bem a muitas questoes minhas ....
desculpe a birncadeira....
aproveitando o post na questão do interbase , tem um outro topico que postei que perguntavo sobre o retorno de cusores(querys) atraves de storedprocedures no IB, descobri:
CREATE PROCEDURE PROC_SELECT RETURNS (VARNOME CHAR(60)) AS
BEGIN
//CURSOR(No oracle abre-se o select com um objCursor (cCursor IS REFFCURSOR)
//No IB é que é necessario passar o valor para as variaveis(out)
FOR
SELECT NOME FROM CLIENTES INTO :VARNOME
DO
SUSPEND;
END
Abraço,
Att, Jacson Soares;
Gostei + 0
02/06/2004
Bolomaster
[b:762a35754e]Olha o palavreado! ;)[/b:762a35754e]
(afarias)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)