Массивы и триггеры

Массивы

Нумерация элементов массива начинается с единицы.

Напишем функцию, принимающую на вход массив целых чисел и возвращающую сумму элементов массива.

CREATE OR REPLACE FUNCTION find_summa_of_array (my_array INTEGER ARRAY) RETURNS INTEGER AS $$
    DECLARE summa_of_array INTEGER;
    DECLARE length_of_array INTEGER;
BEGIN
    length_of_array = array_length(my_array, 1);
    summa_of_array = 0;
    FOR i IN 1..length_of_array LOOP
      summa_of_array = summa_of_array + my_array[i];
    END LOOP;
    RETURN summa_of_array;
END;

$$ LANGUAGE plpgsql;

SELECT find_summa_of_array( ARRAY [10, 30, 40, 20, 25] ) ;

Создадим таблицу для хранения информации о товарах.

Заполним созданную таблицу.

Напишем функцию, рассчитывающую общую сумму цен всех товаров.

Создадим таблицу для хранения имён пользователей.

Напишем функцию для добавления массива пользователей в таблицу.

Вызываем данную функцию для добавления записей.

Попробуем добавить ещё несколько записей.

Ни одна из записей не будет добавлена.

Транзакция не выполняется, так как запись a2 уже есть в таблице.

Триггеры

Создадим таблицу для хранения имён и возрастов людей.

Создадим процедуру, которая будет всегда вызываться перед добавлением записи в таблицу.

При попытке добавить человека с отрицательным возрастом процедура должна отменять добавление и выдавать сообщение об ошибке.

Добавим записи в таблицу.

Первые две записи будут добавлены.

Третья запись НЕ будет добавлена, так как возраст человека отрицательный.

Удаление процедур и триггеров

Для просмотра списка функций и триггерных процедур нужно вбить команду в консоль:

Для удаление функции пишется команда:

Для удаления триггера и процедуры, привязанной к нему, пишутся команды:

Для просмотра списка триггеров можно вбить команду:

Last updated