Как использовать SQL-запрос для переименования ограничения?

Опубликовано: 1 Сентября, 2022

В SQL нам иногда нужно переименовать ограничения таблицы. Весь процесс для того, чтобы сделать то же самое, продемонстрирован ниже. В этой статье мы будем использовать Microsoft SQL Server в качестве нашей базы данных.

Шаг 1: Создайте базу данных. Для этого используйте приведенную ниже команду, чтобы создать базу данных с именем GeeksForGeeks.

Запрос:

CREATE DATABASE GeeksForGeeks

Выход:

Шаг 2: Используйте базу данных GeeksForGeeks. Для этого используйте приведенную ниже команду.

Запрос:

USE GeeksForGeeks

Выход:

Шаг 3: Создайте таблицу INFO внутри базы данных GeeksForGeeks. В этой таблице есть 3 столбца, а именно S_NAME, ROLL и BRANCH, содержащие имя, номер списка и филиал различных студентов, обучающихся в инженерном колледже.

Запрос:

CREATE TABLE INFO(
S_NAME VARCHAR(20),
ROLL INT,
BRANCH VARCHAR(5));

Выход:

Шаг 4: Добавьте пользовательское ограничение CHECK CONSTRAINT с именем BRANCH_CHECK в таблицу INFO . Это ограничение проверяет, что ветвь учащегося, введенная в базу данных, входит в число 5 ветвей, преподаваемых в инженерном колледже, а именно информатика и инженерия, электроника и техника связи, гражданское строительство, машиностроение и электротехника.

Запрос:

ALTER TABLE INFO ADD CONSTRAINT BRANCH_CHECK 
CHECK (BRANCH IN("CSE","ECE","CE","ME","ELE"));

Выход:

Шаг 5: Опишите структуру таблицы INFO.

Запрос:

EXEC SP_COLUMNS INFO;

Выход:

Шаг 6: Вставьте 5 строк в таблицу INFO так, чтобы ветви находились в пределах 5 ветвей, определенных в ограничении BRANCH_CHECK . Таким образом, при добавлении этих строк не возникает никаких ошибок.

Запрос:

INSERT INTO INFO VALUES("MATT",1001,"CSE");
INSERT INTO INFO VALUES("SAM",1002,"ECE");
INSERT INTO INFO VALUES("NICK",1003,"CE");
INSERT INTO INFO VALUES("JOHN",1004,"ELE");
INSERT INTO INFO VALUES("BRUCE",1005,"ME");

Выход:

Шаг 7: Вставьте строки в таблицу INFO таким образом, чтобы ветвь НЕ находилась в пределах 5 ветвей, определенных в ограничении BRANCH_CHECK . Это выдает ошибку, так как нарушает ограничение.

Запрос:

INSERT INTO INFO VALUES("MORRIS",1006,"MECH");

Выход:

Шаг 8: Отобразите все строки таблицы INFO.

Запрос:

SELECT * FROM INFO;

Выход:

Шаг 9: Отобразите все ограничения, определенные для таблицы INFO.

Запрос:

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE TABLE_NAME="INFO";

Выход:

Шаг 10: Переименуйте определяемое пользователем проверочное ограничение с BRANCH_CHECK на CHECK_BRANCH .

Запрос:

SP_RENAME "BRANCH_CHECK","CHECK_BRANCH";

Выход:

Шаг 11: Отобразите все ограничения, определенные для таблицы INFO. Теперь должно быть видно новое имя, т.е. CHECK_BRANCH , вместо старого имени, т.е. BRANCH_CHECK .

Запрос:

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME="INFO";

Выход:

Таким образом, описанным выше способом можно переименовать любое ограничение, присутствующее в таблице.