Реализация ограничения CHECK (CHECK Constraint)
В этом шаге вы создадите новую таблицу customers_with_check
, которая включает ограничение CHECK
(CHECK constraint), чтобы гарантировать, что все адреса электронной почты содержат символ @
.
Сначала давайте создадим новую таблицу с ограничением CHECK напрямую:
CREATE TABLE customers_with_check (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT,
last_name TEXT,
email TEXT CHECK (email LIKE '%@%')
);
Эта команда создает новую таблицу с именем customers_with_check
с ограничением CHECK в столбце email
, которое гарантирует, что он содержит символ @
. Оператор LIKE
используется для сопоставления с шаблоном, а %
является подстановочным знаком (wildcard character), который соответствует любой последовательности символов.
Теперь давайте скопируем существующие данные о клиентах в новую таблицу:
INSERT INTO customers_with_check (customer_id, first_name, last_name, email)
SELECT customer_id, first_name, last_name, email FROM customers;
Теперь попробуйте вставить нового клиента с недействительным адресом электронной почты:
INSERT INTO customers_with_check (first_name, last_name, email) VALUES
('Charlie', 'Davis', 'invalid-email');
Вы должны увидеть сообщение об ошибке, похожее на следующее: Error: CHECK constraint failed: email
. Это указывает на то, что ограничение CHECK
предотвратило вставку недействительного адреса электронной почты.
Чтобы убедиться, что ограничение CHECK
работает, вставьте клиента с действительным адресом электронной почты:
INSERT INTO customers_with_check (first_name, last_name, email) VALUES
('Alice', 'Brown', '[email protected]');
Эта команда должна выполниться успешно, так как адрес электронной почты содержит символ @
.