По умолчанию в дату продажи записывается текущая дата, если не указано иначе.
В таблицу с покупателем заносится общий счет покупки и дата покупки последнего товара по текущему чеку.
В таблице с покупателем содержится номер магазина, в котором была совершена покупка, номер чека, счет и дата покупки.
Создание функции обновления информации в каталоге магазинов.
create or replace function update_shop_catalog(integer, character varying, character varying)
returns character as
$body$
begin
update shop_catalog set shop_name = $2 where id = $1;
update shop_catalog set shop_city = $3 where id = $1;
if found then
perform add_log_message('magazin s id' || $1 || ' obnovlen');
return 'Magazin obnovlen';
else
return 'Magazin ne nayden';
end if;
end
$body$
language plpgsql volatile
cost 100;
alter function update_shop_catalog(integer, character varying, character varying)
owner to postgres;
grant execute on function update_shop_catalog(integer, character varying, character varying) to public;
grant execute on function update_shop_catalog(integer, character varying, character varying) to postgres;
grant execute on function update_shop_catalog(integer, character varying, character varying) to dboperator;
select update_shop_catalog(2,'Aura','Kemerovo');
Попробуем обновить не существующий магазин:
select update_shop_catalog(5, 'Aura','Kemerovo');
Создание функции обновления информации о товарах.
При совпадении полей имя товара, производитель, цена и номер магазина, к полям количество на складе и количество проданных прибавляется значения из соответствующих полей совпавшей записи, после чего ненужная запись становится архивной (булевое arhiv=true)
create or replace function update_tovar(integer, integer, character varying, integer, integer, integer, character varying)
returns character as
$body$
declare tmp_tovar_id int;
tmp_count_whs int;
tmp_count_sold_out int;
tmp_bool boolean;
begin
perform id from tovar where id=$1;
if found then
begin
update tovar set shop_id = $2, tovar_name = $3, tovar_price = $4, count_whs = $5, count_sold_out = $6, maker_name = $7
where id = $1;
if found then
begin
select id, count_whs, count_sold_out, arhiv from tovar
where ((tovar_price =$4) and (shop_id=$2) and (tovar_name=$3) and (maker_name=$7) and (id!=$1))
into tmp_tovar_id, tmp_count_whs, tmp_count_sold_out, tmp_bool;
if ((tmp_tovar_id is not null) and (tmp_tovar_id!=$1) and (tmp_bool=false)) then
begin
update tovar set count_whs = tmp_count_whs+$5,
count_sold_out = tmp_count_sold_out+$6
where id = $1;
update tovar set count_whs = 0,
count_sold_out = 0,
arhiv=true
where id = tmp_tovar_id;
end;
else
end if;
perform add_log_message('Tovar s id' || $1 || ' obnovlen');
return 'Tovar obnovlen';
end;
else
return 'Tovar ne obnovlen';
end if;
end;
else
return 'Net tovara s takim ID';
end if;
end
$body$
language 'plpgsql' volatile
cost 100;
alter function update_tovar(integer, integer, character varying, integer, integer, integer, character varying) owner to postgres;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.