ALTER TABLE (SQL Server Compact)

Modifica uma definição de tabela alterando, adicionando ou descartando colunas e restrições.

Sintaxe

ALTER TABLE table_name
    ALTER COLUMN column_name 
   {
    type_name[({precision[.scale]})][NULL|NOT NULL]
   {DROP DEFAULT 
   | SET DEFAULT constant_expression 
   | IDENTITY [ ( seed , increment ) ]
   } 
| ADD 
   { < column_definition > | < table_constraint > } [ ,...n ] 
| DROP 
   { [ CONSTRAINT ] constraint_name 
   | COLUMN column }
] }
< column_definition > ::= 
   { column_name data_type } 
   [ [ DEFAULT constant_expression ] 
      | IDENTITY [ ( seed , increment ) ] 
   ] 
   [ROWGUIDCOL]
   [ < column_constraint > ] [ ...n ] ]
< column_constraint > ::= 
   [ NULL | NOT NULL ] 
   [ CONSTRAINT constraint_name ] 
   { 
      | { PRIMARY KEY | UNIQUE } 
      | REFERENCES ref_table [ (ref_column) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ]
   }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      | FOREIGN KEY 
        ( column [ ,...n ] )
        REFERENCES ref_table [ (ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
   }

Argumentos

  • table_name
    O nome da tabela a ser modificada.

    Dica

    Os nomes de tabelas devem ser compatíveis com as regras para identificadores. O table_name deve ser exclusivo no banco de dados. table_name pode conter um máximo de 128 caracteres.

  • ALTER COLUMN
    Especifica que a coluna em particular deve ser alterada ou modificada.

  • column_name
    O nome de uma coluna da tabela. Os nomes de colunas devem ser compatíveis com as regras para identificadores e ser exclusivos na tabela.

  • data_type
    Especifica o tipo de dados da coluna. Para obter mais informações sobre tipos de dados, consulte Tipos de dados.

  • DEFAULT
    Especifica o valor fornecido para a coluna quando um valor não é explicitamente fornecido durante uma ação de inserção. As definições DEFAULT podem ser aplicadas a qualquer coluna, exceto aquelas definidas pela propriedade IDENTITY. As definições DEFAULT são removidas quando a tabela é descartada. Somente um valor constante, como uma cadeia de caracteres ou uma função de data, pode ser usado como padrão.

  • IDENTITY
    Indica que a nova coluna é uma coluna de identidade. Quando uma nova linha é adicionada à tabela, o Microsoft SQL Server Compact fornece um valor incremental para a coluna. As colunas de identidade, em geral, são usadas em conjunto com restrições PRIMARY KEY para servir de identificador exclusivo de linha para a tabela. A propriedade IDENTITY pode ser atribuída somente a colunas int. Apenas uma coluna de identidade pode ser criada para cada tabela. Não é possível usar padrões associados e restrições DEFAULT com uma coluna de identidade. Você deve especificar os valores de semente e incremento, ou nenhum deles. Se nenhum deles for especificado, o valor padrão será (1,1).

  • seed
    O valor usado para a primeira linha que é carregada na tabela.

  • increment
    O valor incremental adicionado ao valor de identidade da linha anterior que é carregada.

  • ADD
    Especifica que uma ou mais definições de coluna ou restrições de tabela são adicionadas.

  • DROP { [CONSTRAINT] constraint_name| COLUMN column}
    Especifica que é necessário remover constraint_name ou column_name da tabela.

  • ROWGUIDCOL
    Indica que a nova coluna é uma coluna de identificador global exclusivo de linha. Somente uma coluna uniqueidentifier por tabela pode ser designada como coluna ROWGUIDCOL. A propriedade ROWGUIDCOL pode ser atribuída somente a uma coluna uniqueidentifier.

    ROWGUIDCOL gera automaticamente valores para as novas linhas inseridas na tabela.

  • NULL | NOT NULL
    Palavras-chave que especificam se são permitidos valores nulos na coluna. NULL não é exatamente uma restrição, mas pode ser especificada da mesma maneira que NOT NULL.

  • CONSTRAINT
    Um palavra-chave opcional indicando o início de uma definição de restrição PRIMARY KEY, UNIQUE ou FOREIGN KEY. As restrições são propriedades especiais que impõem a integridade de dados e criam tipos especiais de índices para a tabela e suas colunas.

  • constraint_name
    O nome de uma restrição. constraint_name é opcional e deve ser um valor exclusivo em um banco de dados. Se constraint_name não for especificado, o SQL Server Compact gerará um nome de restrição.

  • PRIMARY KEY
    Uma restrição que impõe a integridade de entidade para colunas ou uma coluna em particular usando um índice exclusivo. Somente uma restrição PRIMARY KEY pode ser criada para cada tabela.

  • UNIQUE
    Uma restrição que fornece integridade de entidade para colunas ou uma coluna em particular usando um índice exclusivo. As colunas em uma restrição UNIQUE podem ser NULL, mas somente um valor NULL é permitido para cada coluna. Uma tabela pode ter várias restrições UNIQUE.

    Dica

    O SQL Server Compact pode usar índices para impor as restrições PRIMARY KEY e UNIQUE. É recomendável que você não dependa desse comportamento nem tente modificar quaisquer índices criados como parte de uma restrição.

  • FOREIGN KEY...REFERENCES
    Uma restrição que fornece integridade referencial para os dados da coluna. As restrições FOREIGN KEY requerem que cada valor da coluna exista na coluna especificada na tabela referenciada.

  • ref_table
    O nome da tabela referenciada pela restrição FOREIGN KEY.

  • ( ref_column [ ,... n] )
    Uma coluna, ou lista de colunas, da tabela que é referenciada pela restrição FOREIGN KEY.

  • ON DELETE {CASCADE | NO ACTION |SET DEFAULT | SET NULL}
    Especifica a ação que ocorre em uma linha da tabela que é criada quando essa linha tem uma relação referencial e a linha referenciada é excluída da tabela pai. O padrão é NO ACTION. Para obter mais informações, consulte a seção "Comentários" mais adiante neste tópico.

  • ON UPDATE {CASCADE | NO ACTION | SET DEFAULT | SET NULL}
    Especifica a ação que ocorre em uma linha da tabela que é criada quando essa linha tem uma relação referencial e a linha referenciada é atualizada na tabela pai. O padrão é NO ACTION. Para obter mais informações, consulte a seção "Comentários" mais adiante neste tópico.

  • column
    Uma coluna ou lista de colunas, entre parênteses, usada em restrições de tabela para indicar as colunas usadas na definição da restrição.

  • n
    Um espaço reservado indicando que o item precedente pode ser repetido n vezes.

Comentários

Para ON DELETE ou ON UPDATE, se for especificada a opção CASCADE, a linha será atualizada na tabela de referência se a linha referenciada correspondente for atualizada na tabela pai. Se for especificado NO ACTION, o SQL Server Compact retornará um erro e a ação de atualização na linha referenciada na tabela pai será revertida.

Por exemplo, você pode ter duas tabelas, A e B, em um banco de dados. A tabela A tem uma relação referencial com a tabela B: a chave estrangeira A.ItemID faz referência à chave primária B.ItemID.

Se uma instrução UPDATE for executada em uma linha da tabela B e uma ação ON UPDATE CASCADE for especificada para A.ItemID, o SQL Server Compact procurará uma ou mais linhas dependentes na tabela A. Se houver alguma, as linhas dependentes na tabela A serão atualizadas, bem como a linha referenciada na tabela B.

Por outro lado, se for especificado NO ACTION, o SQL Server Compact retornará um erro e reverterá a ação de atualização na linha referenciada na tabela B quando houver pelo menos uma linha na tabela A que a referencie.

Exemplos de códigos

A. Alterar os valores de semente e incremento na coluna de identidade

O exemplo a seguir altera os valores de semente e incremento na coluna de identidade.

CREATE TABLE MyCustomers (CustID INTEGER IDENTITY (100,1) PRIMARY KEY, CompanyName NvarChar (50));

INSERT INTO MyCustomers (CompanyName) VALUES ('A. Datum Corporation');

ALTER TABLE MyCustomers ALTER COLUMN CustId IDENTITY (200, 2);

B. Adicionar um valor padrão a uma coluna

O exemplo a seguir modifica a coluna CompanyName (Nome da empresa) para que ela tenha um valor padrão.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'

C. Descartar um valor padrão da coluna

O exemplo a seguir modifica a coluna CompanyName para que ela não tenha um valor padrão.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName DROP DEFAULT