SQL SERVER-2008-Creación de Clave Primaria, Clave Foránea y Restricción predeterminada
Clave primaria, Clave Foránea y restricción predeterminada son las 3 restricciones principales que deben tenerse en cuenta al crear tablas o incluso después de ellas. Parece muy fácil aplicar estas restricciones, pero aún así tenemos algunas confusiones y problemas al implementarlo. Así que traté de escribir sobre estas restricciones que se pueden crear o agregar a diferentes niveles y de diferentes maneras o métodos.
Restricción de clave primaria: Las restricciones de claves primarias impiden valores duplicados para columnas y proporcionan un identificador único para cada columna, además de crear un índice agrupado en las columnas.
1) Instrucción Create Table para crear Clave primaria
a Nivel de columna
USE AdventureWorks2008GOCREATE TABLE Products(ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,ProductName VARCHAR(25));GO
b. Nivel de la Tabla
CREATE TABLE Products(ProductID INT,ProductName VARCHAR(25)CONSTRAINT pk_products_pid PRIMARY KEY(ProductID));GO
2) Instrucción Alter Table para crear Clave primaria
ALTER TABLE ProductsADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)GO
3) Instrucción Alter para Soltar la clave primaria
ALTER TABLE ProductsDROP CONSTRAINT pk_products_pid;GO
Restricción de Clave Foránea: Cuando se agrega una restricción de CLAVE FORÁNEA a una columna o columnas existentes en la tabla SQL Server, comprueba de forma predeterminada los datos existentes en las columnas para garantizar que todos los valores, excepto NULL, existan en la columna o columnas de la CLAVE PRIMARIA o restricción ÚNICA a la que se hace referencia.
1) Instrucción Create Table para crear Clave foránea
a Nivel de columna
USE AdventureWorks2008GOCREATE TABLE ProductSales(SalesID INT CONSTRAINT pk_productSales_sid PRIMARY KEY,ProductID INT CONSTRAINT fk_productSales_pid FOREIGN KEY REFERENCES Products(ProductID),SalesPerson VARCHAR(25));GO
b. Nivel de la Tabla
CREATE TABLE ProductSales(SalesID INT,ProductID INT,SalesPerson VARCHAR(25)CONSTRAINT pk_productSales_sid PRIMARY KEY(SalesID),CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID));GO
1) Instrucción Alter Table para crear Clave foránea
ALTER TABLE ProductSalesADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)GO
2) Instrucción Alter Table para Soltar la Clave Foránea
ALTER TABLE ProductSalesDROP CONSTRAINT fk_productSales_pid;GO
Restricción predeterminada: La restricción predeterminada cuando se crea en alguna columna tendrá los datos predeterminados que se proporcionan en la restricción cuando no se insertan registros o datos en esa columna.
1) Instrucción Create Table para crear una restricción predeterminada
a Nivel de columna
USE AdventureWorks2008GOCREATE TABLE Customer(CustomerID INT CONSTRAINT pk_customer_cid PRIMARY KEY,CustomerName VARCHAR(30),CustomerAddress VARCHAR(50) CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN');GO
b. Nivel de tabla: No se aplica a la Restricción predeterminada
2) Instrucción Alter Table para Agregar Restricción predeterminada
ALTER TABLE CustomerADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddressGO
3) Modificar Tabla para Eliminar Restricción predeterminada
ALTER TABLE CustomerDROP CONSTRAINT df_customer_AddGO