RESTRIÇOES
Pessoal tenho a seguinte situação
Um cliente meu de retifica de motores precisa gerenciar a produção dos funcionários e eu desenvolvi uma ferramenta onde o operador, quando vai iniciar o serviço informa a hora de inicio e ao finalizar a hora do término. A partir dessas informações é feito uma série de outras tarefas, como calcular o tempo de produção e várias outras....
O que está acontecendo é que está aparecendo na tabela situações em que é informado a hora do término sem que a hora de inicio esteja informada. Eu sei que isso pode ser tratado via código, é isso é feito, porém, em algum local do sistema está ocorrendo um bug que leva a isso
Gostaria de saber se alguém conhece uma forma de impor uma restrição no banco de dados onde só pode ser informado o momento de término se a hora de inicio estiver preenchida. Daí eu iria tratar isso via restrição de banco de dados.
Tipo: Só preencher a coluna B se a coluna A estiver preenchida
Uso o SqlServer 2019
Um cliente meu de retifica de motores precisa gerenciar a produção dos funcionários e eu desenvolvi uma ferramenta onde o operador, quando vai iniciar o serviço informa a hora de inicio e ao finalizar a hora do término. A partir dessas informações é feito uma série de outras tarefas, como calcular o tempo de produção e várias outras....
O que está acontecendo é que está aparecendo na tabela situações em que é informado a hora do término sem que a hora de inicio esteja informada. Eu sei que isso pode ser tratado via código, é isso é feito, porém, em algum local do sistema está ocorrendo um bug que leva a isso
Gostaria de saber se alguém conhece uma forma de impor uma restrição no banco de dados onde só pode ser informado o momento de término se a hora de inicio estiver preenchida. Daí eu iria tratar isso via restrição de banco de dados.
Tipo: Só preencher a coluna B se a coluna A estiver preenchida
Uso o SqlServer 2019
Bom dia, pesquise sobre insert if, ou algo parecido rsrsrs, não sou especialista em SGDB mas sei que é possível, ou também pode por na clausula where:
Update Tabela SET HoraTermino=@HoraTermino Where Codigo=@Codigo AND NOT HoraInicio IsNull
ou algo parecido. Não usei SqlServer
Update Tabela SET HoraTermino=@HoraTermino Where Codigo=@Codigo AND NOT HoraInicio IsNull
ou algo parecido. Não usei SqlServer
Estou finalizando esse tópico e só pra auxiliar caso alguém tenha interesse resolvi meu problema e funciona perfeitinho
Criei uma função
ALTER Function [dbo].[CheckDatas](@Inicio SmallDateTime, @Termino SmallDateTime) Returns TinyInt AS
Begin
IF @Inicio IS NULL and @Termino IS NULL
Return 0
If @Inicio IS NULL and Not @Termino IS NULL
Return 1
If @Inicio > @Termino
Return 1
Return 0
End
Depois dessa funçao criada, foi só adicionar uma restrição na tabela
Essa restrição
([dbo].[CheckDatas]([Inicio],[Termino])=(0))
Funciona top e o proprio banco de dados gerencia o processo, não importando onde e como a atualização do registro é feita
Criei uma função
ALTER Function [dbo].[CheckDatas](@Inicio SmallDateTime, @Termino SmallDateTime) Returns TinyInt AS
Begin
IF @Inicio IS NULL and @Termino IS NULL
Return 0
If @Inicio IS NULL and Not @Termino IS NULL
Return 1
If @Inicio > @Termino
Return 1
Return 0
End
Depois dessa funçao criada, foi só adicionar uma restrição na tabela
Essa restrição
([dbo].[CheckDatas]([Inicio],[Termino])=(0))
Funciona top e o proprio banco de dados gerencia o processo, não importando onde e como a atualização do registro é feita
Topico resolvido
Tópico encerrado , respostas não são mais permitidas