Требуется, если зависимость в SQL - PullRequest
0 голосов
/ 24 августа 2018

Мне нужно иметь возможность ограничить вставки в таблицу, если указанный столбец не предоставлен.

Здесь выгода, есть другой столбец, который зависит от этого столбца, который при предоставлении должен обеспечивать принудительное выполнениеобязательное ограничение.

Я рассмотрел ограничения CHECK в операторах CREATE TABLE, но я не знаю, как сделать оператор IF THEN, который будет проверять fieldA, а затем применять обязательное для fieldB.

Оба столбца обнуляются, и в некоторых случаях ни один из них не требуется, но когда поле A указано, я хочу ограничить базу данных разрешением только ненулевых значений для fieldB.

Так что для буквального примера, вот моя таблица с именемPerson - в нем есть следующие столбцы:

PersonID INT IDENTITY
Name VARCHAR(50) NULL
Age INT NULL 
DateOfBirth VARCHAR(20) NULL

Теперь, если запись пытается быть вставлена ​​в Person, где предоставляется Age (fieldA), я хочу убедиться, что DateOfBirth (fieldB) также предоставляется.

Этот вид проверки выполняется из приложения, но мы также хотим, чтобы он был в наших таблицах.

1 Ответ

0 голосов
/ 24 августа 2018

Требуется ограничение check:

check ((DateOfBirth is null and age is null) or (DateOfBirth is not null and age is not null))

Примечание:

  • НЕ СОХРАНЯЙТЕ ДАТЫ КАК СТРУНЫ.Вот это да.Я помещаю это в заглавные буквы.
  • Хранение возраста - плохая идея.Это имеет тенденцию меняться довольно часто.
...