Um restrição é semelhante a um índice, embora também possa ser usado para estabelecer uma relação com outra tabela.

Use a cláusula CONSTRAINT nas instruções ALTER TABLE e CREATE TABLE para criar ou excluir restrições. Há dois tipos de cláusulas CONSTRAINT: uma para criar uma restrição em um único campo e outra para criar uma restrição em mais de um campo.

Observação: O mecanismo de banco de dados do Microsoft Access não dá suporte ao uso de CONSTRAINT ou qualquer uma das instruções de idioma de definição de dados com bancos de dados que não são do Microsoft Access. Use os métodos DAO Create.

Sintaxe

Restrição de campo único:

NOME DA RESTRIÇÃO {CHAVE PRIMÁRIA | UNIQUE | NOT NULL |
REFERÊNCIAS foreigntable [(foreignfield1, foreignfield2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Restrição de vários campos:

NOME DA
RESTRIÇÃO {CHAVE PRIMÁRIA (primary1[, primary2 [, ...]]) |
UNIQUE (unique1[, unique2 [, ...]]) |
NOT NULL (notnull1[, notnull2 [, ...]]) |
CHAVE ESTRANGEIRA [SEM ÍNDICE] (ref1[, ref2 [, ...]]) REFERÊNCIAS foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

A cláusula CONSTRAINT tem estas partes:

Parte

Descrição

nome

O nome da restrição a ser criada.

primary1, primary2

O nome do campo ou dos campos a serem designados como chave primária.

unique1, unique2

O nome do campo ou dos campos a serem designados como uma chave exclusiva.

notnull1, notnull2

O nome do campo ou dos campos que são restritos a valores não Nulos.

ref1, ref2

O nome de um campo chave estrangeira ou campos que se referem a campos em outra tabela.

foreigntable

O nome da tabela estrangeira que contém o campo ou os campos especificados por foreignfield.

foreignfield1, foreignfield2

O nome do campo ou dos campos em foreigntable especificado por ref1, ref2. Você pode omitir essa cláusula se o campo referenciado for a chave primária de foreigntable.


Comentários

Use a sintaxe para uma restrição de campo único na cláusula de definição de campo de uma instrução ALTER TABLE ou CREATE TABLE imediatamente após a especificação do tipo de dados do campo.

Use a sintaxe para uma restrição de vários campos sempre que usar a restrição de palavra reservada fora de uma cláusula de definição de campo em uma instrução ALTER TABLE ou CREATE TABLE.

Usando CONSTRAINT, você pode designar um campo como um dos seguintes tipos de restrições:

  • Você pode usar a palavra reservada UNIQUE para designar um campo como uma chave exclusiva. Isso significa que nenhum dois registros na tabela podem ter o mesmo valor neste campo. Você pode restringir qualquer campo ou lista de campos como exclusivo. Se uma restrição de vários campos for designada como uma chave exclusiva, os valores combinados de todos os campos no índice devem ser exclusivos, mesmo que dois ou mais registros tenham o mesmo valor em apenas um dos campos.

  • Você pode usar as palavras reservadas CHAVE PRIMÁRIA para designar um campo ou um conjunto de campos em uma tabela como uma chave primária. Todos os valores na chave primária devem ser exclusivos e não Nulose só pode haver uma chave primária para uma tabela.

    Observação: Não definir uma restrição DE CHAVE PRIMÁRIA em uma tabela que já tenha uma chave primária; se você fizer isso, ocorrerá um erro.

  • Você pode usar as palavras reservadas FOREIGN KEY para designar um campo como uma chave estrangeira. Se a chave primária da tabela estrangeira consistir em mais de um campo, você deve usar uma definição de restrição de vários campos, listando todos os campos de referência, o nome da tabela estrangeira e os nomes dos campos referenciados na tabela estrangeira na mesma ordem que os campos de referência estão listados. Se o campo ou os campos referenciados são a chave primária da tabela estrangeira, você não precisa especificar os campos referenciados. Por padrão, o mecanismo de banco de dados se comporta como se a chave primária da tabela estrangeira fosse os campos referenciados.

    Restrições de chave estrangeira definem ações específicas a serem executadas quando um valor de chave primária correspondente é alterado:

  • Você pode especificar ações a serem executadas na tabela externa com base em uma ação correspondente executada em uma chave primária na tabela na qual a CONSTRAINT é definida. Por exemplo, considere a seguinte definição para a tabela Clientes:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Considere a seguinte definição da tabela Pedidos, que define uma relação de chave estrangeira referenciando a chave primária da tabela Customers:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Tanto uma CASCATA ON UPDATE quanto uma cláusula ON DELETE CASCADE são definidas na chave estrangeira. A cláusula ON UPDATE CASCADE significa que, se o identificador de um cliente (CustId) for atualizado na tabela Cliente, a atualização será em cascata por meio da tabela Pedidos. Cada ordem que contém um valor de identificador de cliente correspondente será atualizada automaticamente com o novo valor. A cláusula ON DELETE CASCADE significa que, se um cliente for excluído da tabela Cliente, todas as linhas da tabela Pedidos que contenham o mesmo valor de identificador do cliente também serão excluídas.

Considere a seguinte definição diferente da tabela Pedidos, usando a ação SET NULL em vez da ação CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

A cláusula ON UPDATE SET NULL significa que, se o identificador de um cliente (CustId) for atualizado na tabela Cliente, os valores de chave estrangeira correspondentes na tabela Pedidos serão automaticamente definidos como NULL. Da mesma forma, a cláusula ON DELETE SET NULL significa que, se um cliente for excluído da tabela Cliente, todas as chaves estrangeiras correspondentes na tabela Pedidos serão definidas automaticamente como NULL.

Para impedir a criação automática de índices para chaves estrangeiras, o modificador NO INDEX pode ser usado. Essa forma de definição de chave estrangeira deve ser usada somente nos casos em que os valores de índice resultantes seriam duplicados com frequência. Onde os valores em um índice de chave estrangeira são duplicados com frequência, o uso de um índice pode ser menos eficiente do que simplesmente executar uma verificação de tabela. Manter esse tipo de índice, com linhas inseridas e excluídas da tabela, degrada o desempenho e não oferece benefícios.



Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar Microsoft Office Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×