В настоящее время у меня есть куча триггеров, которые делают то же самое.Он вставляется в копию для каждой таблицы, для которой требуется эта функциональность.
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
.