В SQL, как я могу добавить ограничение для будущих операторов INSERT для таблицы? - PullRequest
1 голос
/ 13 февраля 2011

Скажите, у меня есть следующая таблица:

Name    Age
____________
Bob     33
Jow     23
Cindy   29
Mary    22
Phil    98

Я хочу добавить ограничение к этой таблице, чтобы во всех будущих операторах INSERT для этого списка людей возраст вставляемого лица был старше 45 лет. Как я могу это сделать?

Кстати, я использую DB2.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

Если бы мне действительно пришлось это сделать, я мог бы добавить CreationDate к этой таблице и добавить ограничение:

alter table table_name add constraint age_check check 
((age > 18) or (creation_date < '2011-02-12'))

Это, вероятно, не то, что вы хотите, но это лучший способ описать ваше правило: «С 2011-02-12 мы разрешаем регистрировать только> 18 человек». Изменено 45 на 18, потому что это имеет больше смысла:)

1 голос
/ 13 февраля 2011

Я вижу 4 варианта:

  1. Исправьте таблицу, чтобы она соответствовала требованию (если это имеет смысл сделать), затем ALTER TABLE ... ADD CONSTRAINT
  2. ALTER TABLE ... WITH NOCHECK ... ADD CONSTRAINT (это не позволит вам изменить или вставить запись без соблюдения ограничения, но оставит существующие записи в покое.)
  3. CREATE TRIGGER ... ПОСЛЕ ВСТАВКИ ... (это будет проверять только новые вставки.)
  4. Не применять это в базе данных.(Так как это всего лишь учебный пример, это вам не очень поможет.)

Ответ LukLed является альтернативой # 3.Это может быть лучше, поскольку оно упрощает вещи и дает понять, что ограничение является новым с определенной даты.

...