В SQL создание текстового столбца с ограниченными значениями может быть полезно в сценариях, где вы хотите ограничить возможные значения, которые могут храниться в определенном столбце. В этой статье мы рассмотрим различные методы достижения этой цели, а также приведем примеры кода.
Метод 1: использование типа данных Enum
Тип данных ENUM позволяет определить список возможных значений для столбца. Вот пример создания текстового столбца с ограниченными значениями с помощью ENUM:
CREATE TABLE products (
id INT,
name ENUM('Apple', 'Banana', 'Orange')
);
Метод 2: использование проверочного ограничения
Проверочное ограничение позволяет указать условие, которому должны удовлетворяться значения в столбце. Вот пример создания текстового столбца с ограниченными значениями с использованием проверочного ограничения:
CREATE TABLE products (
id INT,
name VARCHAR(50) CHECK (name IN ('Apple', 'Banana', 'Orange'))
);
Метод 3: использование ограничения внешнего ключа
Если у вас есть отдельная таблица, содержащая разрешенные значения для столбца, вы можете использовать ограничение внешнего ключа для обеспечения соблюдения ограниченных значений. Вот пример:
CREATE TABLE allowed_values (
value VARCHAR(50) PRIMARY KEY
);
INSERT INTO allowed_values VALUES ('Apple'), ('Banana'), ('Orange');
CREATE TABLE products (
id INT,
name VARCHAR(50),
FOREIGN KEY (name) REFERENCES allowed_values(value)
);
Метод 4: использование триггера
Вы можете использовать триггер для проверки значений, вставляемых или обновляемых в столбце. Вот пример использования триггера для принудительного применения ограниченных значений:
CREATE TABLE products (
id INT,
name VARCHAR(50)
);
CREATE TRIGGER enforce_limited_values
BEFORE INSERT OR UPDATE ON products
FOR EACH ROW
BEGIN
IF NEW.name NOT IN ('Apple', 'Banana', 'Orange') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid value for name column';
END IF;
END;