Ir para conteúdo
Fórum Script Brasil
  • 0

Períodos sobrepostos


Iceguy

Pergunta

Olá, fiz um MDB em Access, mudei pra ANSI-92 e comecei a criá-lo. Nas validações encontrei um problema, no meu banco estou colocando uma tabela com metas. Cada indicador tem a sua e ela vale por um período. Como faço um CHECK que verifique se a data inserida no início e no final do período não esteja contido por outro período?

teria que ser algo +- assim:

ALTER TABLE meta
ADD CONSTRAINT chk_periodoSobreposto CHECK
(
  'OPA!' NOT IN
  (
    SELECT
      'OPA!' AS result
    FROM
      meta
    WHERE
      meta.codigoIndicador = codigoIndicador /*Aqui da problema porque ele compara com ele mesmo*/
      AND inicio BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/
      AND fim BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/
  )
)

Se eu colocar um valor fixo alí onde ta dando problema ele funciona. Alguma ideia de como resolver isso sem validar na aplicação?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Eu quero colocar na tabela a regra para não deixar haver sobreposição de períodos. A lógica funciona com valores fixos, o problema está somente em diferenciar o dado já gravado com o dado que está sendo inserido, e outro problema é que só posso usar ACCESS para isso.

No CHECK ali, eu queria que o "inicio" fosse o dado sendo inserido, e o "meta.inicio" fosse o dado da tabela (já gravado). Já tentei trocar "FROM meta" por uma subselect com outro nome, mas CHECK não permite subselect.

TRIGGER não funciona no MSAccess, a não ser que você mude para ADP, porém com isso ele roda no SQL Server :/

Estou tentando com STORED PROCEDURE.

Ah, e é

WHERE
      meta.codigoIndicador = codigoIndicador
      AND
      inicio BETWEEN meta.inicio AND meta.fim
      OR 
      fim BETWEEN meta.inicio AND meta.fim

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...