Автозаполнение значений столбца в хранимой процедуре, вызываемой через триггер

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

delimiter $$

create trigger user_before_insert before insert on user for each row
begin
    set NEW.create_time = CURRENT_TIMESTAMP;
    set NEW.create_user_id = @user_id;
    set NEW.modify_time = CURRENT_TIMESTAMP;
    set NEW.modify_user_id = @user_id;
end$$

create trigger user_before_update before update on user for each row
begin
    set NEW.modify_time = CURRENT_TIMESTAMP;
    set NEW.modify_user_id = @user_id;
end$$

Можно ли обернуть строки, которые изменяют OLD и / или NEW в хранимые процедуры, которые вызываются через триггеры? Что-то вроде этого:

delimiter $$

create procedure autofill_on_insert(inout NEW data_type) -- what would be the data_type?
begin
    set NEW.create_time = CURRENT_TIMESTAMP;
    set NEW.create_user_id = @user_id;
    set NEW.modify_time = CURRENT_TIMESTAMP;
    set NEW.modify_user_id = @user_id;
end$$

create procedure autofill_on_update(inout NEW data_type) -- what would be the data_type?
begin
    set NEW.modify_time = CURRENT_TIMESTAMP;
    set NEW.modify_user_id = @user_id;
end$$

delimiter ;

create trigger user_before_insert before insert on user
    for each row call autofill_on_insert(NEW);
create trigger user_before_update before update on user
    for each row call autofill_on_update(NEW);

Дополнительный вопрос: если это возможно, есть ли способ проверить, NEW содержит конкретные столбцы? Есть таблицы, которые не имеют modify_time а также modify_user_id,

1 ответ

Решение

Я могу сказать, что NEW нельзя передать в процедуру, потому что NEW - это псевдоним, представляющий строку. Аргументы процедуры должны быть скалярными значениями, такими как INT, VARCHAR и т. Д.

О 'SET NEW.create_time = CURRENT_TIMESTAMP;'; если поле create_time является TIMESTAMP, вы можете установить CURRENT_TIMESTAMP в качестве значения по умолчанию для него.

Другие вопросы по тегам