SQL SERVER-2008-Creating Primary Key, Foreign Key and Default Constraint
Primary key, Foreign Key and Default constraint to 3 główne ograniczenia, które należy wziąć pod uwagę podczas tworzenia tabel lub nawet po tym. Wydaje się, że stosowanie tych ograniczeń jest bardzo łatwe, ale nadal mamy pewne nieporozumienia i problemy podczas ich wdrażania. Próbowałem więc napisać o tych ograniczeniach, które można tworzyć lub dodawać na różnych poziomach i na różne sposoby lub metody.
ograniczenie klucza podstawowego: ograniczenie klucza podstawowego zapobiega duplikowaniu wartości kolumn i zapewnia unikalny identyfikator każdej kolumny, a także tworzy indeks klastrowy na kolumnach.
1) Utwórz instrukcję tabeli, aby utworzyć klucz podstawowy
a. poziom kolumny
USE AdventureWorks2008GOCREATE TABLE Products(ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,ProductName VARCHAR(25));GO
B. Poziom tabeli
CREATE TABLE Products(ProductID INT,ProductName VARCHAR(25)CONSTRAINT pk_products_pid PRIMARY KEY(ProductID));GO
2) Alter TABLE Statement to create Primary Key
ALTER TABLE ProductsADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)GO
3) Alter Statement To Drop Primary key
ALTER TABLE ProductsDROP CONSTRAINT pk_products_pid;GO
ograniczenie klucza obcego: Gdy ograniczenie klucza obcego jest dodawane do istniejącej kolumny lub kolumn w tabeli SQL Server, domyślnie sprawdza istniejące dane w kolumnach, aby upewnić się, że wszystkie wartości, z wyjątkiem NULL, istnieją w kolumnach odwoływanego klucza podstawowego lub unikalnego ograniczenia.
1) Utwórz instrukcję tabeli, aby utworzyć klucz obcy
a. poziom kolumny
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. Poziom tabeli
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) Alter TABLE Statement to create Foreign Key
ALTER TABLE ProductSalesADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)GO
2) Alter TABLE Statement To Drop Foreign Key
ALTER TABLE ProductSalesDROP CONSTRAINT fk_productSales_pid;GO
domyślne ograniczenie: domyślne ograniczenie utworzone w jakiejś kolumnie będzie zawierało domyślne dane, które są podane w ograniczeniu, gdy do tej kolumny nie są wstawiane żadne rekordy ani dane.
1) Utwórz instrukcję Table, aby utworzyć domyślne ograniczenie
a. poziom kolumny
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. poziom tabeli: Nie dotyczy domyślnego ograniczenia
2) Zmień instrukcję tabeli, aby dodać domyślne ograniczenie
ALTER TABLE CustomerADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddressGO
3) Zmień tabelę, aby usunąć domyślne ograniczenie
ALTER TABLE CustomerDROP CONSTRAINT df_customer_AddGO