90 lines
2.2 KiB
Markdown
90 lines
2.2 KiB
Markdown
---
|
|
title: SQL CHECK Constraint
|
|
localeTitle: Restrição SQL CHECK
|
|
---
|
|
A restrição CHECK é usada para limitar o intervalo de valores que pode ser colocado em uma coluna.
|
|
|
|
Se você definir uma restrição CHECK em uma única coluna, ela permitirá apenas determinados valores para essa coluna.
|
|
|
|
Se você definir uma restrição CHECK em uma tabela, ela poderá limitar os valores em determinadas colunas com base nos valores de outras colunas na linha.
|
|
|
|
### SQL CHECK em CREATE TABLE
|
|
|
|
O SQL a seguir cria uma restrição CHECK na coluna "Age" quando a tabela "Persons" é criada. A restrição CHECK garante que você não pode ter nenhuma pessoa abaixo de 18 anos:
|
|
|
|
**MySQL:**
|
|
|
|
```sql
|
|
CREATE TABLE Persons (
|
|
ID int NOT NULL,
|
|
LastName varchar(255) NOT NULL,
|
|
FirstName varchar(255),
|
|
Age int,
|
|
CHECK (Age>=18)
|
|
);
|
|
```
|
|
|
|
**SQL Server / Oracle / MS Access:**
|
|
|
|
```sql
|
|
CREATE TABLE Persons (
|
|
ID int NOT NULL,
|
|
LastName varchar(255) NOT NULL,
|
|
FirstName varchar(255),
|
|
Age int CHECK (Age>=18)
|
|
);
|
|
```
|
|
|
|
Para permitir a nomeação de uma restrição CHECK e para definir uma restrição CHECK em várias colunas, use a seguinte sintaxe SQL:
|
|
|
|
**MySQL / SQL Server / Oracle / MS Access:**
|
|
|
|
```sql
|
|
CREATE TABLE Persons (
|
|
ID int NOT NULL,
|
|
LastName varchar(255) NOT NULL,
|
|
FirstName varchar(255),
|
|
Age int,
|
|
City varchar(255),
|
|
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
|
|
);
|
|
```
|
|
|
|
### SQL CHECK em ALTER TABLE
|
|
|
|
Para criar uma restrição CHECK na coluna "Idade" quando a tabela já estiver criada, use o seguinte SQL:
|
|
|
|
**MySQL / SQL Server / Oracle / MS Access:**
|
|
|
|
```sql
|
|
ALTER TABLE Persons
|
|
ADD CHECK (Age>=18);
|
|
```
|
|
|
|
Para permitir a nomeação de uma restrição CHECK e para definir uma restrição CHECK em várias colunas, use a seguinte sintaxe SQL:
|
|
|
|
**MySQL / SQL Server / Oracle / MS Access:**
|
|
|
|
```sql
|
|
ALTER TABLE Persons
|
|
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
|
|
```
|
|
|
|
### DROP uma restrição CHECK
|
|
|
|
Para descartar uma restrição CHECK, use o seguinte SQL:
|
|
|
|
**SQL Server / Oracle / MS Access:**
|
|
|
|
```sql
|
|
ALTER TABLE Persons
|
|
DROP CONSTRAINT CHK_PersonAge;
|
|
```
|
|
|
|
**MySQL:**
|
|
|
|
```sql
|
|
ALTER TABLE Persons
|
|
DROP CHECK CHK_PersonAge;
|
|
|
|
``` |