Я покажу вам способ сделать это с помощью функции.
Сначала мы создаем таблицу сотрудников:
CREATE TABLE employees(
id BIGSERIAL PRIMARY KEY,
column1 TEXT,
column2 TEXT
);
Далее мы создаем функцию, которая требует три параметра:
columnName
- имя столбца, который необходимо обновить
columnValue
- новое значение, до которого необходимо обновить столбец
employeeId
- идентификатор сотрудника, который будет обновлен
Используя функцию форматирования, мы генерируем запрос на обновление в виде строки и используем команду EXECUTE для выполнения запроса.
Вот код функции.
CREATE OR REPLACE FUNCTION update_columns_on_employee(columnName TEXT, columnValue TEXT, employeeId BIGINT)
RETURNS VOID AS
$$
DECLARE update_statement TEXT := format('UPDATE EMPLOYEES SET %s = ''%s'' WHERE id = %L',columnName, columnValue, employeeId);
BEGIN
EXECUTE update_statement;
end;
$$ LANGUAGE plpgsql;
Теперь давайте вставим некоторые данные в таблицу сотрудников
INSERT INTO employees(column1, column2) VALUES ('column1_start_value','column2_start_value');
Так что теперь у нас есть сотрудник со значением id
, равным 1, который имеет значение column__start_value для column1
и значение column2_start_value для column2
.
Если мы хотим обновить значение column2
с 'column2_start_value' до 'column2_new_value', все, что нам нужно сделать, это выполнить следующий вызов
SELECT * FROM update_columns_on_employee('column2','column2_new_value',1);