SQL SERVER-2008-Creazione di chiave primaria, chiave esterna e vincolo predefinito
Chiave primaria, chiave esterna e vincolo predefinito sono i 3 vincoli principali che devono essere considerati durante la creazione di tabelle o anche dopo. Sembra molto facile applicare questi vincoli, ma abbiamo ancora alcune confusioni e problemi durante l’implementazione. Così ho provato a scrivere su questi vincoli che possono essere creati o aggiunti a diversi livelli e in modi o metodi diversi.
Vincolo della chiave primaria: i vincoli delle chiavi primarie impediscono i valori duplicati per le colonne e forniscono un identificatore univoco a ciascuna colonna, oltre a creare un indice cluster sulle colonne.
1) Create Table Statement per creare la chiave primaria
a. Column Level
USE AdventureWorks2008GOCREATE TABLE Products(ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,ProductName VARCHAR(25));GO
b. A Livello di tabella
CREATE TABLE Products(ProductID INT,ProductName VARCHAR(25)CONSTRAINT pk_products_pid PRIMARY KEY(ProductID));GO
2) Istruzione Alter Table per creare la Chiave Primaria
ALTER TABLE ProductsADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)GO
3) Istruzione Alter per Drop chiave Primaria
ALTER TABLE ProductsDROP CONSTRAINT pk_products_pid;GO
Vincolo Di Chiave Esterna: Quando un vincolo di CHIAVE ESTERNA viene aggiunto a una colonna o a colonne esistenti nella tabella SQL Server, per impostazione predefinita controlla i dati esistenti nelle colonne per garantire che tutti i valori, tranne NULL, esistano nelle colonne della CHIAVE PRIMARIA o del vincolo UNIVOCO a cui si fa riferimento.
1) Crea istruzione tabella per creare chiave esterna
a. Livello di colonna
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. A Livello di tabella
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) Istruzione Alter Table per creare Foreign Key
ALTER TABLE ProductSalesADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)GO
2) Istruzione Alter Table per eliminare Foreign Key
ALTER TABLE ProductSalesDROP CONSTRAINT fk_productSales_pid;GO
di Default Vincolo: vincolo Predefinito quando viene creato su qualche colonna si hanno i dati di default che è dato il vincolo di nessun record o i dati vengono inseriti in quella colonna.
1) Create Table per creare un Vincolo Default
un. A Livello di colonna
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. A Livello di tabella : Non applicabile per Vincolo Default
2) Alter Table per Aggiungere un Vincolo Default
ALTER TABLE CustomerADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddressGO
3) Alter Table Drop Vincolo Default
ALTER TABLE CustomerDROP CONSTRAINT df_customer_AddGO