ALTER TABLE (SQL Server Compact Edition)

Modifica la definición de una tabla cambiando, agregando o eliminando columnas y restricciones.

Sintaxis

ALTER TABLE table_name
{ [ ALTER COLUMN column_name 
   {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
    Nombre de la tabla que se va a modificar.

    [!NOTA] Los nombres de tabla deben cumplir las mismas reglas que los identificadores. El valor de table_name debe ser exclusivo dentro de la base de datos. El argumento table_name puede tener un máximo de 128 caracteres.

  • ALTER COLUMN
    Especifica qué columna concreta se debe cambiar o modificar.
  • column_name
    Nombre de una columna de la tabla Los nombres de columna deben cumplir las mismas reglas que los identificadores y deben ser exclusivos en la tabla.
  • data_type
    Especifica el tipo de datos de la columna. Para obtener más información acerca de los tipos de datos, vea Tipos de datos.
  • DEFAULT
    Especifica el valor que se asigna a la columna cuando no se ha suministrado ningún valor de forma explícita durante una acción de inserción. Las definiciones DEFAULT pueden aplicarse a cualquier columna excepto a las definidas por la propiedad IDENTITY. Las definiciones DEFAULT desaparecen cuando la tabla se elimina. Sólo los valores constantes, por ejemplo, una cadena de caracteres o una función de fecha, se pueden utilizar como valores predeterminados.
  • IDENTITY
    Indica que la nueva columna es una columna de identidad. Cuando se agrega una nueva fila a la tabla, Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) proporciona un valor incremental para la columna. La propiedad IDENTITY sólo puede asignarse a las columnas int o bigint.
  • seed
    Valor utilizado para la primera fila cargada en la tabla.
  • increment
    Valor incremental agregado al valor de identidad de la fila cargada anteriormente.
  • ADD
    Especifica que se van a agregar una o más definiciones de columna o restricciones de tabla.
  • DROP { [CONSTRAINT] constraint_name| COLUMN column}
    Especifica que constraint_name o column_name se deben quitar de la tabla.
  • ROWGUIDCOL
    Indica que la nueva columna es una columna de identificador único global de fila. Sólo se puede designar una columna uniqueidentifier por tabla como columna ROWGUIDCOL. La propiedad ROWGUIDCOL sólo se puede asignar a una columna uniqueidentifier.

    ROWGUIDCOL genera valores automáticamente para las nuevas filas que se insertan en la tabla.

  • NULL | NOT NULL
    Palabras clave que especifican si se permiten valores NULL en la columna. NULL no es exactamente una restricción, pero puede especificarse de la misma manera que NOT NULL.
  • CONSTRAINT
    Palabra clave opcional que indica el principio de una definición de una restricción PRIMARY KEY, UNIQUE o FOREIGN KEY. Las restricciones son propiedades especiales que garantizan la integridad de los datos y crean tipos especiales de índices para la tabla y sus columnas.
  • constraint_name
    Nombre de una restricción. El valor de constraint_name es opcional y debe ser exclusivo en una base de datos. Si no se especifica el valor de constraint_name, SQL Server Compact Edition genera un nombre de restricción.
  • PRIMARY KEY
    Es una restricción que garantiza la integridad de la entidad para una columna o columnas específicas utilizando un índice exclusivo. Sólo se puede crear una restricción PRIMARY KEY para cada tabla.
  • UNIQUE
    Restricción que proporciona integridad a la entidad para una columna o columnas específicas mediante un índice exclusivo. Las columnas de una restricción UNIQUE pueden ser NULL, pero sólo se permite un valor NULL por columna. Las tablas pueden tener múltiples restricciones UNIQUE.

    [!NOTA] SQL Server Compact Edition puede usar índices para imponer las restricciones PRIMARY KEY y UNIQUE. No es recomendable confiar en este comportamiento ni intentar modificar ningún índice generado como parte de una restricción.

  • FOREIGN KEY...REFERENCES
    Restricción que proporciona integridad referencial a los datos de la columna. Las restricciones FOREIGN KEY requieren que todos los valores de la columna existan en la columna especificada de la tabla de referencia.
  • ref_table
    Nombre de la tabla a la que la restricción FOREIGN KEY hace referencia.
  • ( ref_column [ ,... n] )
    Columna o lista de columnas de la tabla a la que la restricción FOREIGN KEY hace referencia.
  • ON DELETE {CASCADE | NO ACTION |SET DEFAULT | SET NULL}
    Especifica qué sucede con una fila de la tabla que se ha creado cuando dicha fila tiene una relación referencial y la fila a la que se hace referencia se elimina de la tabla primaria. El valor predeterminado es NO ACTION. Para obtener más información, vea la sección "Notas" posteriormente en este tema.
  • ON UPDATE {CASCADE | NO ACTION | SET DEFAULT | SET NULL}
    Especifica qué sucede con una fila de la tabla que se ha creado cuando dicha fila tiene una relación referencial y la fila a la que se hace referencia se actualiza en la tabla primaria. El valor predeterminado es NO ACTION. Para obtener más información, vea la sección "Notas" posteriormente en este tema.
  • column
    Columna o lista de columnas, entre paréntesis, utilizada en las restricciones de tablas a fin de indicar las columnas empleadas para la definición de la restricción.
  • n
    Marcador de posición que indica que el elemento anterior puede repetirse un número n de veces.

Notas

Con los argumentos ON DELETE u ON UPDATE, si se especifica la opción CASCADE, la fila se actualiza en la tabla de referencia si la fila a la que se hace referencia correspondiente también se actualiza en la tabla primaria. Si se especifica NO ACTION, SQL Server Compact Edition devuelve un error y se revierte la acción de actualización en la fila de la tabla primaria a la que se hace referencia.

Por ejemplo, supongamos que cuenta con dos tablas, A y B, en una base de datos. La tabla A tiene una relación referencial con la tabla B: la clave externa A.ItemID hace referencia a la clave principal B.ItemID.

Si se ejecuta una instrucción UPDATE en una fila de la tabla B y se especifica una acción ON UPDATE CASCADE para A.ItemID, SQL Server Compact Edition comprueba si existen una o varias filas dependientes en la tabla A. Si existe alguna, las filas dependientes de la tabla A se actualizan, ya que ésta es la fila a la que se hace referencia en la tabla B.

Del mismo modo, si se especifica NO ACTION, SQL Server Compact Edition devuelve un error y revierte la acción de actualización en la fila de la tabla B a la que se hace referencia cuando existe al menos una fila en la tabla A que hace referencia a la misma.

Ejemplos de código

A. Cambiar los valores de inicialización e incremento en la columna de identidad

El ejemplo siguiente cambia los valores de inicialización e incremento en la columna de identidad.

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. Agregar un valor predeterminado a una columna

El ejemplo siguiente modifica la columna CompanyName para que tenga un valor predeterminado.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'
C. Eliminar un valor predeterminado de la columna

El ejemplo siguiente modifica la columna CompanyName para que no tenga un valor predeterminado.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName DROP DEFAULT

Vea también

Ayuda e información

Obtener ayuda sobre SQL Server Compact Edition