CHECK em SQL DEVELOPER

1 resposta
sqlserversql
4du

Estou a tentar verificar se data inserida é inferior a data do sistema.
Mas esta a dar um erro . Alguem poderia ajudar-me ?

.

1 Resposta

G

CREATE TABLE [dbo].[Computador] (
[IdComputador] [Chave] , – Igual numeric
[Ano] [Descricao4000] , ---- Igual varchar
CONSTRAINT PkComputador PRIMARY KEY CLUSTERED (IdComputador)
)
GO

ALTER TABLE Computador ADD CONSTRAINT Ano CHECK (Ano < GetDate() );
GO

Delete Computador;
GO

Insert into Computador values (1, 1967);

Select * from Computador;

GO
Insert into Computador values (2, 2016);

Select * from Computador;

GO
Insert into Computador values (3, 2017);

Select * from Computador;

GO
Insert into Computador values (4, 2021);

Select * from Computador;

GO

NA ULTIMA LINHA ACONTECE O ERRO DE ANO MAIOR QUE DATA CORRENTE. DEVE SER CRIADO ERRO DE RETORNO PARA ELE NAO ABENDAR E TERMINAR SEU PROGRAMA.

------------------- OU

CREATE TABLE [dbo].[Computador2] (
[IdComputador2] [Chave] ,
[Ano] [Descricao4000] ,
CONSTRAINT PkComputador2 PRIMARY KEY CLUSTERED (IdComputador2)
)
GO

CREATE FUNCTION fChecarData() RETURNS int

AS

BEGIN

DECLARE @Ret int

SELECT @Ret = COUNT(*) FROM Computador2 Where Ano > year(GetDate());

RETURN @Ret

END;

GO

ALTER TABLE Computador2 ADD CONSTRAINT chkComputador2 CHECK (dbo.fChecarData() >= 1 );
GO

Criado 1 de novembro de 2017
Ultima resposta 2 de nov. de 2017
Respostas 1
Participantes 2