Jump to content
Fórum Script Brasil
  • 0

Períodos sobrepostos


Iceguy

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...