Вы не предоставили ни точное сообщение об ошибке, ни структуру таблицы h_dat_cample_req
, поэтому, боюсь, мне придется угадать.
Я подозреваю, что имена столбцов в вашем h_dat_cample_req
находятся не в том порядке, в котором вы ожидаете, или в таблице есть другие столбцы, значение которых вы не указали в своих операторах INSERT
.
Вы используете операторы INSERT
без перечисления столбцов, в которые должно входить каждое значение. Проблема с использованием этой формы оператора INSERT
состоит в том, что если столбцы в таблице не в том порядке, в котором вы думаете, или столбцы, которые были добавлены или удалены, вы получите ошибку, и она Будет трудно отследить это. Кроме того, если вы не получите ошибку компиляции, есть вероятность, что данные будут вставлены в неправильные столбцы. Присвоение имен столбцам дает понять, какое значение входит в какой столбец, упрощает идентификацию удаленных столбцов, а также означает, что вам не нужно указывать значения для всех столбцов в таблице - любой столбец, не указанный в списке, получает NULL
значение.
Я бы настоятельно рекомендовал всегда именовать столбцы в операторах INSERT
. Другими словами, вместо написания
INSERT INTO some_table VALUES (value_1, value_2, ...);
запись
INSERT INTO some_table (column_1, column_2, ...) VALUES (value_1, value_2, ...);
Кстати, вы присваиваете значение своей переменной dmltype
, но нигде не используете ее значение. Это не приведет к ошибке компиляции, но это признак того, что ваш триггер может работать не совсем так, как вы ожидаете. Возможно, ваша таблица h_dat_cample_req
является таблицей истории и содержит столбец для типа выполняемой операции?