Cenário:
Você está trabalhando como desenvolvedor do SQL Server, você precisa criar a tabela dbo.Customer que deve ter as colunas First Name, Age e Age Type. Você pode adicionar CustomerId como Identity. Você precisa criar a restrição de verificação nas colunas de idade e tipo de idade com a lógica abaixo
<65 agetype="Adult" and="" p="">
Se true, deixe o registro inserir ou atualizar, caso contrário, falhe devido a Check Constraint.
65>
<65 agetype="Adult" and="" p="">Solução:65>
<65 agetype="Adult" and="" p="">O script abaixo pode ser usado para adicionar Check Constraint em várias colunas de acordo com nossos requisitos.65>
CREATE TABLE dbo.Customer (
CustomerId INT identity(1, 1)
,NAME VARCHAR(100)
,Age INT
,AgeType VARCHAR(15)
,CONSTRAINT dbo_Customer_AgeAndAgeType CHECK (
(
Age <= 17
AND AgeType = 'Child'
)
OR (
Age > 17
AND Age < 65
AND AgeType = 'Adult'
)
OR (
Age >= 65
AND AgeType = 'Senior'
)
)
) Vamos inserir alguns registros e tentar ver se Check Constraint está funcionando como esperado.
--Correct values accrording to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Najaf',13,'Child')
go
--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Leena',14,'Adult')
go
--Correct values accroding to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Raza',30,'Adult')
go
--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Aamir',30,'Senior')
go
--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('John',65,'Adult')
go
--Correct values accroding to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Kris',65,'Senior')
go (1 linha(s) afetadas)
Mensagem 547, Nível 16, Estado 0, Linha 25
A instrução INSERT entrou em conflito com a restrição CHECK "dbo_Customer_AgeAndAgeType". O conflito ocorreu no banco de dados "YourDatabaseName", tabela "dbo.Customer".
A instrução foi encerrada.
(1 linha(s) afetadas)
Msg 547, Level 16, Estado 0, Linha 33
A instrução INSERT entrou em conflito com a restrição CHECK "dbo_Customer_AgeAndAgeType". O conflito ocorreu no banco de dados "YourDatabaseName", tabela "dbo.Customer".
A instrução foi encerrada.
Msg 547, Level 16, State 0, Line 37
A instrução INSERT entrou em conflito com a restrição CHECK "dbo_Customer_AgeAndAgeType". O conflito ocorreu no banco de dados "YourDatabaseName", tabela "dbo.Customer".
A instrução foi encerrada.
(1 linha(s) afetadas)
Vamos verificar os dados na tabela usando a consulta de seleção. Como pode ser visto abaixo, são inseridos os únicos registros que passaram na Check Constraint. O restante dos registros não pôde ser inserido.
![]() |
| Como criar restrição de verificação em várias colunas na tabela do SQL Server |
Vamos tentar atualizar os registros e ver se Check Constraint está funcionando conforme o esperado.
update dbo.Customer set Age=30 where Customerid=1
Falha com o erro abaixo, pois não podemos ter Age 30 for AgeType='Child' de acordo com nossa lógica Check Constraint.
Msg 547, Level 16, State 0, Linha 18
A instrução UPDATE entrou em conflito com a restrição CHECK "dbo_Customer_AgeAndAgeType". O conflito ocorreu no banco de dados "YourDatabaseName", tabela "dbo.Customer".
A instrução foi finalizada.
Vídeo Demo :Como criar Check Constraint on Várias colunas no SQL Server
