--Перви́чный ключ(primary key) — в реляционной модели данных один из потенциальных ключей отношения, выбранный в качестве основного ключа (или ключа по умолчанию).
--Перви́чный ключ - столбец, значения которого во всех строках различны.
--В таблице возможно наличие только одного ограничения по первичному ключу.
--Все столбцы с ограничением PRIMARY KEY должны иметь признак NOT NULL.
--Если допустимость значения NULL не указана, то для всех столбцов c ограничением PRIMARY KEY устанавливается признак NOT NULL.
USE tsql;
--Создание первичного ключа в новой таблице
CREATE TABLE dbo.keys
(
ID int NOT NULL,
name VARCHAR(MAX),
email VARCHAR(MAX)
CONSTRAINT PK_T_ID PRIMARY KEY CLUSTERED (ID)
);
--Создание первичного ключа в существующей таблице
ALTER TABLE dbo.keys
ADD CONSTRAINT PK_T_ID PRIMARY KEY CLUSTERED (ID);
--Можно создать ограничение уникальности чтобы гарантировать, что в определенных столбцах, не участвующих в первичном ключе, не будут встречаться повторяющиеся значения.
--Создание ограничения уникальности автоматически приводит к созданию соответствующего уникального индекса.
--Создание ограничения уникальности
CREATE TABLE dbo.un
(
UN int NOT NULL,
name VARCHAR(MAX),
email VARCHAR(MAX)
CONSTRAINT AK_UN UNIQUE(UN),
);
--Создание ограничения уникальности в существующей таблице
ALTER TABLE dbo.un
ADD CONSTRAINT AK_UN UNIQUE (UN);
--Создание связей внешнего ключа. Связь создается между двумя таблицами, чтобы связать строки одной таблицы со строками другой.
--Создание внешнего ключа в новой таблице
--Предложения ON DELETE CASCADE и ON UPDATE CASCADE обеспечевают распространение изменений, вносимых в таблицу dbo.keys на таблицу dbo.fk.
CREATE TABLE dbo.fk
(
TID int NOT NULL,
name VARCHAR(MAX),
email VARCHAR(MAX)
CONSTRAINT PK_T_TID PRIMARY KEY NONCLUSTERED(TID),
CONSTRAINT FK_T_TID FOREIGN KEY(TID)
REFERENCES dbo.keys(ID)
ON DELETE CASCADE
ON UPDATE CASCADE
);
--Создание внешнего ключа в существующей таблице
ALTER TABLE dbo.fk
ADD CONSTRAINT FK_T_TID FOREIGN KEY(TID)
REFERENCES dbo.keys(ID)
ON DELETE CASCADE
ON UPDATE CASCADE
;
--Проверим работу CASCADE
insert into dbo.keys values (1, '1', '1')
insert into dbo.fk values (1, '1', '1')
UPDATE dbo.keys SET ID = 7 WHERE id = 1
SELECT * FROM dbo.fk
DELETE dbo.keys WHERE ID = 7
SELECT * FROM dbo.fk
--Создание ограничений
CREATE TABLE dbo.ch
(
i int
CONSTRAINT chi CHECK (i >= 1)
);
--Создание ограничений в созданной таблице
ALTER TABLE dbo.ch
ADD CONSTRAINT chi CHECK (i >= 1);
--Проверим работу ограничения
insert into dbo.ch values (1)
insert into dbo.ch values (-1)
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!