Sybase ASE 15.7: создайте триггер таким образом, чтобы перед вставкой я хотел изменить вставляемую строку

Я использую Sybase ASE 15.7. Я хочу создать триггер перед вставкой, чтобы перед вставкой я хотел изменить некоторые поля во вставленной строке.

Пожалуйста, помогите Спасибо!


person joe    schedule 07.01.2021    source источник


Ответы (1)


С точки зрения триггера у вас есть несколько вариантов:

  • for insert триггер; должен быть определен относительно базовой таблицы; этот триггер сработает после вставки данных в таблицу; триггер будет закодирован для выполнения обновлений базовой таблицы вновь вставленной строки
  • instead of триггер; должно быть определено для представления (представление будет определено для базовой таблицы); вы бы выполнили свою вставку против представления, что вызвало бы срабатывание триггера instead of; триггер будет закодирован для копирования/манипулирования данными из псевдотаблицы inserted и записи окончательного набора данных в базовую таблицу

См. создание триггера для более подробной информации.


Другой вариант — написать хранимую процедуру, которая выполняет все изменения перед вставкой; вместо вставки непосредственно в базовую таблицу вы должны вызвать хранимую процедуру (передав все значения столбца в качестве входных параметров). [конечно, далеко не идеально]

Конечно, есть еще один вариант: приложение должно выполнять проверки и правки перед вставкой перед вставкой окончательного набора данных в базовую таблицу.

person markp-fuso    schedule 07.01.2021
comment
Таким образом, мы не можем сделать перед вставкой непосредственно в сам триггер, как мы делаем в Oracle? - person joe; 08.01.2021
comment
Я не могу сделать в приложении. Вставка происходит из разных мест - person joe; 08.01.2021
comment
если вы не можете изменить varied places для выполнения вставки в представление (с триггером instead of в представлении), то нет, вы не сможете предварительно изменить данные до того, как они будут вставлены в таблицу - person markp-fuso; 09.01.2021