Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

OLÁ A TODOS! Estou fazendo uma revista. De onde vem a tarefa .... Encontre agências semelhantes


@andrew   (2001-12-04 11:38) [0]

... você precisa verificar a exclusividade da data inserida. Então, ao mesmo tempo, não há dois eventos. Não me diga como dirigir essa verificação para o construtor de tabela ou consulta antes da linha "inserir em ....."? Obrigado!



Val   (2001-12-04 13:11) [1]

não precisamos de uma verificação, mas de um índice exclusivo, no qual esse campo de data entrará



@andrew   (2001-12-04 13:58) [2]

E isso é como: "o que incluirá o campo de data"? Significa que o campo "date" é único? Se isso se destina, então isso não é totalmente adequado, porque realmente interessado em intervalos de tempo os eventos não se cruzaram. Por exemplo um evento de 5 até 8 pela manhã. O outro é de 6 para 7. Se você verificar a exclusividade do índice, o SQL permitirá que você grave, mas não deve.



@andrew   (2001-12-04 14:05) [3]

Na verdade, você pode criar vários algoritmos para resolver meu problema. O mais elementar que está girando na minha cabeça, a saber: primeiro retornar todos os valores, então classificar através deles, olhe ... etc. - muito longo e freio. Talvez alguém tenha acabado de se deparar e conheça alguma solução pronta para minha pergunta: rápida e simples e ainda assim, de preferência, não no nível do software, mas no nível de consulta SQL ou SQL, porque na solução para o problema no nível do software, quando um grande número de usuários trabalha imediatamente, o tempo de atraso "selecionar * ...; verificar .....; se tudo estiver ok, insira algo ...." pode ser fatal.

Obrigado novamente antecipadamente!



Mick   (2001-12-04 14:07) [4]

Em geral, revistas normais são escritas sequencialmente. A data não é inserida pelo cliente, mas pelo servidor. Se um determinado processo começou em 5 e terminou em 8, então o diário terá o registro 1 do começo (5 pela manhã), um registro do fim (8 da manhã) e um monte de registros entre eles que lhe dirão o que aconteceu naquele momento.



Nest   (2001-12-04 14:14) [5]

Sim, ontem também tive essa pergunta.
Mas, por enquanto, adiei sua decisão - há coisas mais importantes.
Em geral, acho que seu período deve ser caracterizado pelos parâmetros 2me
start_time_ date e end_time_date.
Então, se a cada momento, apenas um evento pode ocorrer, então, ao entrar, é necessário verificar se:
[1.date_time_start <end_time_date]
2. Não há entrada para a qual end_time_time esteja vazia ou maior que a entrada date_time_start.

Talvez esses pensamentos devam ser trazidos à mente - não houve tempo - até agora, apenas uma idéia vaga.
Passeio?



@andrew   (2001-12-04 14:17) [6]

> Mick
Não é realmente isso.
Não se trata de uma revista no sentido computacional da palavra, mas de uma revista como organizadora, um diário no qual você pode escrever alguns planos para o futuro.



@andrew   (2001-12-04 14:24) [7]

> Nest
Bem, sim, em princípio, a ideia é clara. Mas esta é uma solução de software. Ou seja grosso modo, antes que eu queira escrever alguma coisa eu faço:
1. Eu retorno todos os registros, classificando-os por time_date.
2. Torne-se a última linha (Query1.Última)
3. Se a hora de início do que eu quero inserir for> = a hora final do último registro, então Insert pode ser feito.
É possível fazer a mesma coisa, não com software, mas com um pedido?

Só estou com medo de que, com o trabalho simultâneo de várias pessoas, você possa estragar tudo.



Nest   (2001-12-04 14:36) [8]

E porque não cavalgar?
1.Query1: selecione max (DCK)
2.Se query1.fields [0] .asdatetime> entrada DVN, em seguida, abortar

Para fazer tanto verificar e inserir uma única solicitação, é necessário, IMHO, não é ruim para remover% @ tsya. E um par não é difícil.



Nest   (2001-12-04 14:38) [9]

Talvez seja possível - basta sentar para pensar sobre lógica elementar e como apresentar isso em uma solicitação WHERE.
Eu dei uma ideia - tente pensar mais. Eu realmente não tenho tempo.



Mick   (2001-12-04 14:39) [10]

Você pode seguir o caminho de desnormalizar a tabela de log.
Estrutura:
Campo 1 Key (qualquer chave primária artificial)
Data 2
3 Campos de horas (pelo número de horas em um dia)

Seguinte:
O cliente verifica a continuidade do intervalo inserido (fácil)
O gatilho na tabela verifica se NÃO há valores NULL nos campos do mesmo nome nos registros da mesma data.
Se houver, então eles pegaram a sobreposição de eventos, se não, tudo está bem.



Sam   (2001-12-04 19:27) [11]

E quanto aos gatilhos?



kaif   (2001-12-04 20:17) [12]

Um par de anos atrás, eu resolvi uma tarefa tão exata para organizar uma consulta com os médicos. Fiz no InterBase. O algoritmo é completamente não trivial. Para que isso funcione rapidamente, é claro, os índices são necessários. Eu tive que criar lacunas como registros separados, procedimentos armazenados de lacunas de “esmagamento” e “colagem” eram necessários. Primeiro, “lacunas de tempo livre” são criadas e, em seguida, elas são divididas conforme o tempo gasto. Por conseguinte, o seu número está aumentando gradualmente. Casos específicos estão ligados a um índice único substituto dessas lacunas. Funcionou de forma rápida e consistente com o acesso simultâneo de vários usuários. Eu pensei muito e tentei diferentes opções. Sem transformar lacunas individuais em objetos que seriam criados, excluídos e usados, não encontrei nenhuma outra boa solução.



Страницы: 1 filial inteira

Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.6 MB
Hora: 0.03 c
3-21963
szap
2001-12-05 11:53
2002.01.08
velocidade


14-22318
frostbite
2001-10-31 17:11
2002.01.08
Rebobinar


1-22128
Vinni2000
2001-12-18 17:17
2002.01.08
RichEdit !!!!!!!!!!!!!!!!!!


3-21950
Eremita
2001-12-05 11:38
2002.01.08
Transações Implicitamente Iniciadas


6-22316
dmur
2001-09-24 20:58
2002.01.08
Intercepção de erros na conexão por meio de soquetes





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese romeno Russa sérvio Slovak esloveno espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol