Чтобы ограничить значения в столбце базы данных SQL, вы можете использовать несколько методов. Вот некоторые распространенные подходы и примеры кода:
-
Ограничения проверки данных.
Вы можете определить ограничения для столбца, чтобы обеспечить соблюдение определенных правил для разрешенных значений. Например, вы можете использовать ограничениеCHECK, чтобы ограничить диапазон значений, или ограничениеUNIQUE, чтобы обеспечить уникальность.-- Restricting values between 1 and 100 CREATE TABLE MyTable ( MyColumn INT CHECK (MyColumn BETWEEN 1 AND 100) ); -- Restricting unique values CREATE TABLE MyTable ( MyColumn INT UNIQUE ); -
Перечисляемые типы данных.
Если столбец имеет ограниченный набор разрешенных значений, вы можете использовать перечислимый тип данных, чтобы явно определить эти значения. Это ограничивает столбец принятием значений только из определенного списка.CREATE TYPE StatusEnum AS ENUM ('Active', 'Inactive', 'Pending'); CREATE TABLE MyTable ( Status StatusEnum ); -
Ограничения внешнего ключа.
Если вы хотите ограничить значения в столбце значениями, существующими в другой таблице, вы можете использовать ограничения внешнего ключа. Это обеспечивает ссылочную целостность между таблицами.-- Creating a referenced table CREATE TABLE Statuses ( ID INT PRIMARY KEY, Name VARCHAR(50) ); -- Creating the main table with a foreign key constraint CREATE TABLE MyTable ( ID INT PRIMARY KEY, StatusID INT, FOREIGN KEY (StatusID) REFERENCES Statuses(ID) ); -
Триггеры.
Триггеры можно использовать для обеспечения соблюдения пользовательских бизнес-правил и логики проверки. Вы можете создать триггер, который выполняется до или после операции изменения данных в таблице и проверяет вставляемые или обновляемые значения.-- Creating a trigger to restrict values CREATE TRIGGER RestrictValuesTrigger BEFORE INSERT OR UPDATE ON MyTable FOR EACH ROW BEGIN IF NEW.MyColumn NOT IN (1, 2, 3) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid value'; END IF; END;