- Este tópico contém 7 respostas, 2 vozes e foi atualizado pela última vez 17 anos, 8 meses atrás por
hermesmc.
-
AutorPosts
-
14 de julho de 2008 às 11:33 pm #82235
hermesmc
ParticipanteSenhores,
Criei um trigger que é disparada sempre que ha uma atulização em uma tabela. Ela grava os dados anteriores da tabela em uma outra acrescentando o timestamp. No insert eu coloquei “current_timestamp”. Porém reparei que ele só atualiza os três primeiros campos dos milésimos de segundo, ex.: “10/07/08 17:10:20:798000000”. Ou seja, as 6 ultimas casas são preenchidas com zero. Isso é correto? Caso negativo, como corrigir? Meu ORACLE é 10g servidor windows 2003 server e estações com windows XP SP3.
15 de julho de 2008 às 12:20 am #82236Marcio68Almeida
ParticipanteAté onde sei, essa é a precisão máxima do Oracle, milisegundos…
15 de julho de 2008 às 2:35 am #82237hermesmc
ParticipantePara algumas alterações é retornado um erro por chave duplicada. No caso, a chave é o campo timestamp. Alterei, na tabela que é povoada pelo trigger, o campo chave para um campo com código auto-incremental(feito com uma sequencia) e resolveu meu problema. A minha dúvida é o pq de se ter um campo com esse tamanho e não utilizar. Pq depois dos segundos ainda existem 9 posições e o oracle só usa três? Só curiosidade.
15 de julho de 2008 às 2:47 am #82238hermesmc
ParticipanteAchei em outro forum um problema parceido com o meu:
http://forum.devmedia.com.br/viewtopic. … 36c1799fa4
Quando a autora da pergunta do forum executa um select current_timestamp from dual, a precisão no linux é de seis casas depois dos segundo e no windows a mesma query retorna uma precisão de três casas…15 de julho de 2008 às 5:08 pm #82240Marcio68Almeida
ParticipanteOK, deixei de ser preguiçoso e fiz o teste… 😳
No Linux :
SQL> Select current_timestamp from dual;CURRENT_TIMESTAMP
15-JUL-08 10.02.32.408004 AM -03:00
No windows
SQL> Select current_timestamp from dual;CURRENT_TIMESTAMP
15/07/08 10:02:01,426245 -03:00
Ambos deram precisão de seis casas…
Portanto não é sistema operacional…Obs.: Estou testando em Oracle 9i RAC
15 de julho de 2008 às 5:29 pm #82241hermesmc
ParticipanteValeu Márcio,
Só que aqui no meu a precisão é de três casas, alguma dica? O mesmo select dá:
15/07/08 10:10:55,281000000
15 de julho de 2008 às 6:06 pm #82242Marcio68Almeida
ParticipanteMostre o resultado destas duas consultas
show parameters nls
select * from v$NLS_PARAMETERS;15 de julho de 2008 às 6:24 pm #82243hermesmc
ParticipanteResultado do select * from v$NLS_PARAMETERS
PARAMETER VALUE
—————————- —————————–
NLS_LANGUAGE BRAZILIAN PORTUGUESE
NLS_TERRITORY BRAZIL
NLS_CURRENCY R$
NLS_ISO_CURRENCY BRAZIL
NLS_NUMERIC_CHARACTERS ,.
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE BRAZILIAN PORTUGUESE
NLS_CHARACTERSET WE8MSWIN1252
NLS_SORT WEST_EUROPEAN
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY Cr$
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE19 rows selected
-
AutorPosts
- Você deve fazer login para responder a este tópico.