Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Después de crear y rellenar una tabla, es posible que deba modificar el diseño de la tabla. Para ello, use la instrucción ALTER TABLE . Tenga en cuenta que alterar la estructura de una tabla existente puede provocar la pérdida de algunos datos. Por ejemplo, cambiar el tipo de datos de un campo puede provocar pérdida de datos o errores de redondeo, dependiendo de los tipos de datos que use. También puede afectar a otras partes de la aplicación que hagan referencia al campo cambiado. Debe usar siempre precaución adicional antes de modificar la estructura de una tabla existente.
La instrucción ALTER TABLE le permite agregar, quitar o cambiar una columna (o campo), así como agregar o quitar una restricción. También le permite declarar un valor predeterminado para un campo; sin embargo, sólo podrá alterar los campos de uno en uno. Suponga que tiene una base de datos de facturación y que desea agregar un campo a la tabla Customers (Clientes). Para agregar un campo con la instrucción ALTER TABLE, utilice la cláusula ADD COLUMN con el nombre del campo, su tipo de datos y el tamaño de éste, si es necesario.
ALTER TABLE tblCustomers
ADD COLUMN Address TEXT(30)
Para cambiar el tipo de datos o el tamaño de un campo, utilice la cláusula ALTER COLUMN con el nombre del campo, el tipo de datos y el tamaño del tipo de datos deseados, si es necesario.
ALTER TABLE tblCustomers
ALTER COLUMN Address TEXT(40)
Si desea cambiar el nombre de un campo, tendrá que quitar el campo y volver a crearlo. Para quitar un campo, utilice la cláusula DROP COLUMN con el nombre del campo únicamente.
ALTER TABLE tblCustomers
DROP COLUMN Address
Tenga en cuenta que usar este método eliminará los datos existentes del campo. Para conservar los datos existentes, debe cambiar el nombre del campo con el modo de diseño de la tabla de la interfaz de usuario de Access, o escribir código para conservar los datos actuales en una tabla temporal y anexarlos de nuevo a la tabla cuyo nombre ha cambiado. Un valor predeterminado es el valor que se introduce en un campo cada vez que se agrega un nuevo registro a una tabla y no se especifica ningún valor para esa columna en particular. Si desea establecer un valor predeterminado para un campo, utilice la palabra clave DEFAULT después de declarar el tipo del campo en una cláusula ADD COLUMN o ALTER COLUMN.
ALTER TABLE tblCustomers
ALTER COLUMN Address TEXT(40) DEFAULT Unknown
Tenga en cuenta que el valor predeterminado no se encuentra entre comillas simples. Si fuera así, también se insertarían las comillas en el registro. La palabra clave DEFAULT también se puede usar en una instrucción 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)
Nota:
La instrucción DEFAULT sólo se puede ejecutar mediante el proveedor OLE DB de Access y ADO. Devolverá un mensaje de error si se utiliza mediante la interfaz de usuario de la vista SQL de Access.
Restricciones
Las restricciones pueden usarse para establecer claves principales y la integridad referencial, así como para restringir los valores que pueden insertarse en un campo. En general, las restricciones pueden emplearse para preservar la integridad y la coherencia de los datos de la base de datos.
Hay dos tipos de restricciones: restricciones de un solo campo o de nivel de campo, y restricciones de varios campos o de nivel de tabla. Ambos tipos se pueden utilizar en las instrucciones CREATE TABLE y ALTER TABLE.
Las restricciones de un solo campo, también denominadas restricciones del nivel de columna, se declaran con el propio campo tras haberse declarado el campo y el tipo de datos. En este ejemplo, utilice la tabla Customers (Clientes) y cree una clave principal de un solo campo en el campo CustomerID (IdCliente). Para agregar la restricción, utilice la palabra clave CONSTRAINT con el nombre del campo.
ALTER TABLE tblCustomers
ALTER COLUMN CustomerID INTEGER
CONSTRAINT PK_tblCustomers PRIMARY KEY
Tenga en cuenta que se da el nombre de la restricción. Podría utilizar un acceso directo para declarar la clave principal que omita totalmente la cláusula CONSTRAINT.
ALTER TABLE tblCustomers
ALTER COLUMN CustomerID INTEGER PRIMARY KEY
Sin embargo, el uso del método del acceso directo hará que Access genere al azar un nombre para la restricción, lo que dificultará las referencias que se le hagan en el código. Siempre es una buena idea asignar un nombre a las restricciones.
Para anular una restricción, use la cláusula DROP CONSTRAINT con la instrucción ALTER TABLE y proporcione el nombre de la restricción.
ALTER TABLE tblCustomers
DROP CONSTRAINT PK_tblCustomers
Las restricciones también se pueden usar para restringir los valores que se permiten para un campo. Puede restringir los valores a NOT NULL o UNIQUE, o puede definir una restricción Check, que es un tipo de regla de negocio que se puede aplicar a un campo. Suponga que desea restringir los valores de los campos del nombre y de los apellidos para que sean únicos, lo que significa que nunca debería existir una combinación de nombre y apellidos que fuera igual en dos registros de la tabla. Dado que se trata de una restricción de varios campos, ésta se declara en el nivel de tabla, no en el nivel de campo. Use la cláusula ADD CONSTRAINT y defina una lista de varios campos.
ALTER TABLE tblCustomers
ADD CONSTRAINT CustomerID UNIQUE
([Last Name], [First Name])
Una restricción CHECK es una característica avanzada de SQL que le permite agregar validación de datos a una tabla mediante la creación de una expresión que puede hacer referencia a un único campo o a varios de una o más tablas. Supongamos que quiere asegurarse de que los importes especificados en el registro de una factura sean siempre superiores a 0,00 €. Para ello, use una restricción CHECK declarando la palabra clave CHECK y su expresión de validación en la cláusula ADD CONSTRAINT de una instrucción ALTER TABLE.
ALTER TABLE tblInvoices
ADD CONSTRAINT CheckAmount
CHECK (Amount > 0)
La expresión utilizada para definir una restricción check también puede hacer referencia a más de un campo de la misma tabla, o a campos de otras tablas, y puede usar cualquier operación válida en Microsoft Access SQL, como instrucciones SELECT , operadores matemáticos y funciones de agregado. La expresión que define la restricción Check no puede tener más de 64 caracteres de largo.
Suponga que desea comprobar el límite de crédito de cada cliente antes de agregarlo a la tabla Customers (Clientes). Mediante el uso de una instrucción ALTER TABLE con las cláusulas ADD COLUMN y CONSTRAINT, se crea una restricción que buscará el valor en la tabla CreditLimit para comprobar el límite de crédito del cliente. Use las siguientes instrucciones SQL para crear la tabla tblCreditLimit, agregue el campo CustomerLimit a la tabla tblCustomers, agregue la restricción CHECK a la tabla tblCustomers y pruebe la restricción 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
Tenga en cuenta que al ejecutar la instrucción UPDATE TABLE , recibirá un mensaje que indica que la actualización no se realizó correctamente porque infringió la restricción check. Si actualiza el campo CustomerLimit a un valor igual o menor que 100, la actualización será correcta.
Actualizaciones y eliminaciones en cascada
Las restricciones también se pueden utilizar para establecer la integridad referencial entre tablas de bases de datos. Esta característica de integridad referencial significa que los datos son coherentes y no están dañados. Por ejemplo, si ha eliminado un registro de un cliente pero el registro de envío de dicho cliente permanece en la base de datos, los datos no serían coherentes, ya que existiría un registro huérfano en la tabla de envíos. La integridad referencial se establece al generar una relación entre tablas.
Además del establecimiento de la integridad referencial, también puede asegurarse de que los registros de las tablas a las que se hace referencia permanecen sincronizados mediante el uso de actualizaciones y eliminaciones en cascada. Por ejemplo, una vez que se han declarado las actualizaciones y las eliminaciones en cascada, si se elimina el registro del cliente, el registro de envío de éste se elimina automáticamente.
Para habilitar las actualizaciones y eliminaciones en cascada, use las palabras clave ON UPDATE CASCADE o ON DELETE CASCADE de la cláusula CONSTRAINT de una instrucción ALTER TABLE. Tenga en cuenta que se deben aplicar a la clave externa.
ALTER TABLE tblShipping
ADD CONSTRAINT FK_tblShipping
FOREIGN KEY (CustomerID) REFERENCES
tblCustomers (CustomerID)
ON UPDATE CASCADE
ON DELETE CASCADE
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.