Вы можете сделать первичный ключ таблицы полем типа ENUM
.Например:
CREATE TABLE test (
id enum('1','2') NOT NULL,
domain varchar(50) NOT NULL,
primary key (id));
Когда вы обновляете его, вы должны явно установить идентификатор в "", "1" или "2". * Это не может быть нулем, и может быть только одна записьс каждым ID.Домен по-прежнему хранится в поле domain
, поэтому, надеюсь, что любая внешняя система запрашивает эту базу данных, не будет проблем с получением желаемых результатов.
Если вы хотите повторить текущее ограничение, согласно которому доменные имена должны быть уникальными, вы также можете добавить unique key (domain)
.
*, отметив, что пустая строка разрешена (а не совпадает сNULL), потому что enum на самом деле является типом строки.Таким образом, вы должны указать два допустимых значения идентификатора, чтобы иметь всего три значения.
Поочередно: Чего вы пытаетесь достичь / предотвратить здесь?Есть какой-то автоматизированный процесс, который может добавить записи в таблицу?Вы пытаетесь удостовериться, что вы случайно этого не делаете или что тот, кто похитил ваш аккаунт, не может этого сделать?
Если процесс, который может вставлять записи, выполняется для вашего пользователя, вы можете поместить свои три записи в таблицу и затем забрать привилегии INSERT у себя.Вы по-прежнему сможете изменять существующие записи, но вы не сможете добавлять больше, если вы не предоставите эту возможность явно.