poniedziałek, 5 marca 2018

[PL] SQL Server 2012 SP4 - reguły (ograniczenia) zawartości kolumn

W momencie gdy pojawia się potrzeba kontrolowania wartości jakie mogą pojawić się w konkretnej kolumnie w bazie danych istnieje możliwość utworzenia tzw. ograniczenia (constraint). Przykładowo, możemy mieć tabelę przeznaczoną na dane osób (np. klientów) i chcieć, aby w kolumnie „płeć” dało się wprowadzić jedynie wartości zgodne ze standardem PN-ISO 5218, gdzie: 0 oznacza płeć nieokreśloną, 1 – mężczyznę, 2 – kobietę, 9 – wartość nieznaną. Aby to zrobić, podczas tworzenia tabeli możemy zastosować polecenie CONSTRAINT zgodnie z przykładem poniżej.

USE BazaTestowa
GO

CREATE TABLE dbo.Osoby (
Id BIGINT IDENTITY(1,1)
               NOT NULL
               PRIMARY KEY,
Imie nvarchar(200) NOT NULL,
Nazwisko nvarchar(200) NOT NULL,
DataUrodzenia date NOT NULL,
Plec char(1) NOT NULL
CONSTRAINT CHK_Osoby_Plec_wartosc_zgodna_z_PN_ISO_5218
CHECK (Plec in ('0', '1', '2', '9')),
);

Jeżeli zechcemy teraz wprowadzić do bazy danych wiersz zawierający zawartość kolumny Plec w postaci cyfry 0, 1, 2 lub 9 to operacja powinna się udać.

INSERT INTO dbo.Osoby (Imie, Nazwisko, DataUrodzenia, Plec)
VALUES (N'Jan',N'Kowalski', '1990-01-01', '1');

Jednak w przypadku próby wprowadzenia do bazy danych np. wartości 3 w kolumnie Plec (czy innej niż 0,1,2 lub 9), wspomniana czynność nie uda się – zostanie wyświetlony błąd odwołujący się do stworzonego wcześniej ograniczenia. 

INSERT INTO dbo.Osoby (Imie, Nazwisko, DataUrodzenia, Plec)
VALUES (N'Anna',N'Kowalska', '1980-01-01', '3');


Brak komentarzy:

Prześlij komentarz