Hoje eu me deparei com um problema a respeito dos recids… Quando eu tentava inserir um novo registro na tabela de parceiros comerciais (contactperson) o DAX me dizia que o registro já existia.
Abri o Sql Server Profiler para acompanhar a query de insert e pude observar que ele estava tentando usar um RECID que já havia sido usado anteriormente, ai precisei descobrir da onde vinham os recids…
1º Os recids ficam armazenados na tabela systemsequences, não aparece na seção de tabelas da aot, para visualizar você tem que ir até a aot, system documentation, tables -> SystemSequences.
Nesta tabela você encontra os campos:
Id |
|
NextVal |
|
MinVal |
|
MaxVal |
|
Cycle |
|
Name |
|
DataAreaId |
|
2º Criei uma tabela nova, chamada table_test, cujo o ID atribuído foi 50001;
3º Ao dar o comando para criar um novo registro, vi no profiler o seguinte comando:
“INSERT INTO SYSTEMSEQUENCES (ID,NEXTVAL,MINVAL,MAXVAL,CYCLE,NAME,TABID,DATAAREAID,RECVERSION,RECID)
VALUES (-1,5637144826,1,9223372036854775807,0,’SEQNO’,50001,’dat’,1,-1)”
Ou seja, o DAX inserindo um controle pra essa nova tabela que criei, dizendo que o proximo recid deve ser 5637144826
4º Ao efetivar o cadastro de um item, pude observar que o recid inserido não foi o que estava apontado para o nextval, mas sim o nextval + 250.
Enfim, o valor do proximo recid sempre será acrescido de 250 e ai sim é associado ao novo registro.
Question: A grande pergunta? Porque esse contro?
Answer: I don’t know! kkkk
Caso alguém ache o motivo, favor nos enviar.
[]s
Pichler
One Response
x
01|Oct|2016 1Hi, I would like to subscribe for this website to get hottest updates,
thus where can i do it please help out.
Leave a reply