Compartilhar via


Modificar o design de uma tabela usando o Access SQL

Depois de criar e preencher uma tabela, pode ser necessário modificar seu design. Para fazer isso, use a instrução ALTER TABLE . Observe que alterar a estrutura de uma tabela existente pode causar a perda de parte dos dados. Por exemplo, alterar o tipo de dados de um campo pode resultar na perda de dados ou em erros de arredondamento, dependendo dos tipos de dados que esteja usando. Esta ação pode também causar a interrupção de outras partes do aplicativo, que podem fazer referência ao campo alterado. Tenha sempre cuidado redobrado na hora de modificar a estrutura de uma tabela existente.

Com a instrução ALTER TABLE, você pode adicionar, remover ou alterar uma coluna ou campo, além de adicionar ou remover uma restrição. Você pode também declarar um valor padrão para um campo; no entanto, pode alterar apenas um campo de cada vez. Digamos que você tenha um banco de dados de notas fiscais e deseja adicionar um campo à tabela Clientes. Para adicionar um campo com a instrução ALTER TABLE, use a cláusula ADD COLUMN com o nome do campo, o respectivo tipo de dados e o tamanho do tipo de dados, quando for necessário.

ALTER TABLE tblCustomers 
   ADD COLUMN Address TEXT(30) 

Para alterar o tipo de dados ou o tamanho de um campo, use a cláusula ALTER COLUMN com o nome do campo, o tamanho e o tipo de dados desejado, quando for necessário.

ALTER TABLE tblCustomers 
   ALTER COLUMN Address TEXT(40) 

Se você quiser alterar o nome de um campo, precisará remover o campo e recriá-lo. Para remover um campo, use a cláusula DROP COLUMN apenas com o nome do campo.

ALTER TABLE tblCustomers 
   DROP COLUMN Address 

Observe que o uso deste método elimina os dados existentes de um campo. Para manter os dados existentes, altere o nome do campo com o modo de design de tabela da interface do usuário do Access ou grave o código para manter os dados atuais em uma tabela temporária e acrescente-o novamente na tabela renomeada. Um valor padrão é o valor inserido em um campo, sempre que um novo registro é adicionado a uma tabela e nenhum valor é especificado para essa coluna em particular. Para definir um valor padrão de um campo, use a palavra-chave DEFAULT, após declarar o tipo de campo na cláusula ADD COLUMN ou ALTER COLUMN.

ALTER TABLE tblCustomers 
   ALTER COLUMN Address TEXT(40) DEFAULT Unknown 

Observe que o valor padrão não é colocado entre aspas simples. Quando for o caso, as aspas também são inseridas no registro. A palavra-chave DEFAULT também pode ser usada em uma instrução CREATE TABLE .

CREATE TABLE tblCustomers ( 
   CustomerID INTEGER CONSTRAINT PK_tblCustomers 
      PRIMARY KEY, 
   [Last Name] TEXT(50) NOT NULL, 
   [First Name] TEXT(50) NOT NULL, 
   Phone TEXT(10), 
   Email TEXT(50), 
   Address TEXT(40) DEFAULT Unknown) 

Observação

A instrução DEFAULT pode ser executada somente através do provedor OLE DB e do ADO. Ela retorna uma mensagem de erro, quando usada por meio da interface do usuário no modo SQL do Access.

Restrições

As restrições podem ser usadas para estabelecer chaves primárias e integridade referencial, e para restringir os valores que podem ser inseridos em um campo. De modo geral, as restrições são usadas para manter a integridade e a consistência dos dados no banco de dados.

Há dois tipos de restrições: a restrição de campo único ou no nível do campo e a restrição de vários campos ou no nível da tabela. Os dois tipos de restrições podem ser usados na instrução CREATE TABLE ou na ALTER TABLE.

A restrição de campo único, também conhecida como instrução no nível da coluna, é declarada com o campo em si, depois que o campo e o tipo de dados forem declarados. Por exemplo, use a tabela Clientes e crie uma chave primária de campo único no campo CustomerID. Para adicionar uma restrição, use a palavra-chave CONSTRAINT com o nome do campo.

ALTER TABLE tblCustomers 
   ALTER COLUMN CustomerID INTEGER 
   CONSTRAINT PK_tblCustomers PRIMARY KEY 

Observe que o nome da restrição é determinado. Você pode usar um atalho para declarar a chave primária que omite totalmente a cláusula CONSTRAINT.

ALTER TABLE tblCustomers 
   ALTER COLUMN CustomerID INTEGER PRIMARY KEY 

No entanto, o uso do método de atalho faz com que o Access gere um nome para a restrição de forma aleatória, o que dificulta fazer a referência no código. É uma boa ideia sempre nomear suas restrições.

Para eliminar uma restrição, use a cláusula DROP CONSTRAINT com a instrução ALTER TABLE e forneça um nome para a restrição.

ALTER TABLE tblCustomers 
   DROP CONSTRAINT PK_tblCustomers 

As restrições podem ser usadas também para restringir os valores permitidos para um campo. Você pode restringir os valores para NOT NULL ou UNIQUE, ou definir uma restrição CHECK, que é um tipo de regra comercial, que pode ser aplicada a um campo. Digamos que você deseja restringir os valores dos campos Nome e Sobrenome para que seja um valor único, o que significa que nunca deve haver uma combinação de nome e sobrenome, que sejam iguais em dois registros na tabela. Como se trata de uma restrição de vários campos, ela é declarada no nível da tabela, e não no nível do campo. Use a cláusula ADD CONSTRAINT e defina uma lista de vários campos.

ALTER TABLE tblCustomers 
   ADD CONSTRAINT CustomerID UNIQUE 
   ([Last Name], [First Name]) 

A restrição CHECK é um recurso avançado do SQL, que permite adicionar uma validação de dados em uma tabela, criando uma expressão que faz referência a um único campo ou a vários campos, em uma ou mais tabelas. Digamos que você deseja verificar se os valores inseridos em um registro de nota fiscal são sempre superiores a R$ 0,00. Para fazê-lo, use uma restrição CHECK, declarando a palavra-chave CHECK e a expressão de validação na cláusula ADD CONSTRAINT de uma instrução ALTER TABLE.

ALTER TABLE tblInvoices 
   ADD CONSTRAINT CheckAmount 
   CHECK (Amount > 0) 

A expressão usada para definir uma restrição de verificação também pode se referir a mais de um campo na mesma tabela ou a campos em outras tabelas e pode usar todas as operações válidas no MICROSOFT Access SQL, como instruções SELECT , operadores matemáticos e funções de agregação. A expressão que define a restrição de verificação não pode ter mais de 64 caracteres.

Digamos que você deseja verificar o limite de crédito dos clientes, antes de adicioná-los à respectiva tabela. Crie uma restrição usando a instrução ALTER TABLE com as cláusulas ADD COLUMN e CONSTRAINT , que vai buscar o valor na tabela CreditLimit para verificar o limite de crédito dos clientes. Use as seguintes instruções do SQL para criar a tabela tblCreditLimit, adicionar o campo CustomerLimit à tabela tblCustomers, adicionar a restrição CHECK à tabela tblCustomers e testar a restrição CHECK.

CREATE TABLE tblCreditLimit ( 
   Limit DOUBLE) 
 
INSERT INTO tblCreditLimit 
   VALUES (100) 
 
ALTER TABLE tblCustomers 
   ADD COLUMN CustomerLimit DOUBLE 
 
ALTER TABLE tblCustomers 
   ADD CONSTRAINT LimitRule 
   CHECK (CustomerLimit <= (SELECT Limit 
      FROM tblCreditLimit)) 
 
UPDATE TABLE tblCustomers 
   SET CustomerLimit = 200 
   WHERE CustomerID = 1 

Lembre-se de que ao executar a instrução UPDATE TABLE , você recebe uma mensagem indicando que a atualização não foi bem-sucedida porque ela violou a restrição de verificação. Quando você atualiza o campo CustomerLimit para um valor igual ou inferior a 100, a atualização é bem-sucedida.

Atualizações e exclusões em cascata

As restrições podem ser usadas para estabelecer a integridade referencial entre tabelas de banco de dados. A integridade referencial significa que os dados são consistentes e não corrompidos. Por exemplo, quando você exclui um registro de cliente, mas o registo de remessa desse cliente permanece no banco de dados, os dados ficam inconsistentes, já que você passa a ter um registro órfão na tabela de remessas. A integridade referencial é estabelecida quando você cria uma relação entre tabelas.

Além de estabelecer a integridade referencial, você pode também garantir que os registros das tabelas referenciadas permaneçam em sincronia, através do uso das atualizações e exclusões em cascata. Por exemplo, quando as atualizações e exclusões em cascata são declaradas, se você excluir o registro do cliente, o respectivo registo de remessa é excluído automaticamente.

Para habilitar as atualizações e exclusões em cascata, use as palavras-chave ON UPDATE CASCADE e/ou ON DELETE CASCADE, na cláusula CONSTRAINT de uma instrução ALTER TABLE. Elas devem ser aplicadas a uma chave estrangeira.

ALTER TABLE tblShipping 
   ADD CONSTRAINT FK_tblShipping 
   FOREIGN KEY (CustomerID) REFERENCES 
      tblCustomers (CustomerID) 
   ON UPDATE CASCADE 
   ON DELETE CASCADE 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.