@Togzi

Как правильно написать TRIGGER?

Всем доброго времени суток. Мне нужно осуществить запись INT данных в столбец, исходя из данных другого VARCHAR столбца.
Например, вводится в Столбец1 Значение1, значит в Столбец2 должно записаться 0, вводится Значение2 - записывается 11 и т.п.
Каким образом нужно писать триггер? Если есть возможность, дайте похожий шаблон или уже готовый подходящий код.
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для PostgreSQL триггер не нужен. Делается через генерируемое поле как-то так:
CREATE TABLE "table" (
  field1 VARCHAR(16),
  field2 INT GENERATED ALWAYS AS (
    ARRAY_POSITION(ARRAY['value1', 'value2', 'value3', 'value4'], field1::TEXT)
  ) STORED
);

Или, если значения идут не по порядку, то
CREATE TABLE "table" (
  field1 VARCHAR(16),
  field2 INT GENERATED ALWAYS AS (
    (ARRAY[0, 11, 22, 44])[ARRAY_POSITION(ARRAY['value1', 'value2', 'value3', 'value4'], field1::TEXT)]
  ) STORED
);

В самом запущенном случае можно так:
CREATE TABLE "table" (
  field1 VARCHAR(16),
  field2 INT GENERATED ALWAYS AS (
    CASE field1
      WHEN 'value1' THEN 0
      WHEN 'value2' THEN 11
      WHEN 'value3' THEN 22
      ELSE 44
    END
  ) STORED
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы