SQL: заполнить столбец таблицы в зависимости от критериев другого столбца - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть таблица SQL с двумя полями: пропорция и объяснение.

Столбец Пропорция заполняется через хранимую процедуру и является десятичным (7,2) полем. Если Пропорция <0, я хочу вывести «Отрицательную пропорцию» в столбец Объяснение, и мне интересно, как лучше всего это сделать. </p>

Проблема в том, что столбец Объяснение должен оставаться редактируемым (следовательно, не вычисляемый столбец). Например, пользователям все еще нужно иметь возможность обновить этот столбец своим собственным текстом, в некоторых случаях он будет просто добавляться к тексту «Отрицательная пропорция», который уже находится в этом поле.

Каковы мои лучшие варианты для этого?

1 Ответ

0 голосов
/ 07 ноября 2018

Это сложно. Значения по умолчанию для столбцов не могут быть выражениями с другими столбцами. Вы можете реализовать это с помощью триггера или на уровне приложения.

Другим способом было бы иметь «скрытый» столбец:

create table t (
    proportion decimal(10, 2),
    _explanation varchar(255),
    explanation as (case when _explanation is null and proportion < 0 then 'Negative proportion' end)
);

Это не требует триггеров, но вам нужно вставить в _explanation. Вы можете реализовать аналогичную логику, используя представление:

create table t (
    proportion decimal(10, 2),
    explanation varchar(255)
);

create view v_t as 
    select proportion, 
           (case when explanation is null and proportion < 0 then 'Negative proportion' end) as explanation
    from t;
...