У меня есть (SQL Server) таблица, которая содержит 3 типа результатов: FLOAT, NVARCHAR (30) или DATETIME (3 отдельных столбца). Я хочу убедиться, что для любой данной строки, только один столбец имеет результат, а другие столбцы имеют значение NULL. Что является самым простым проверочным ограничением для достижения этого?
Контекст для этого - попытка дооснастить способность фиксировать нечисловые результаты в существующей системе. Добавление двух новых столбцов в таблицу с ограничением для предотвращения более одного результата на строку было наиболее экономичным подходом, не обязательно правильным.
Обновление: Извините, тип данных snafu. К сожалению, я не хотел, чтобы указанные типы результатов интерпретировались как типы данных SQL Server, просто общие термины, исправленные сейчас.
источник
Вот решение PostgreSQL, использующее встроенные функции массива :
источник