У меня есть таблица CLIENT, и мне нужно ее отфильтровать, чтобы она показывала только недавно добавленные записи.Создание процедуры Oracle для выбора недавно добавленных данных в таблицу CLIENT, и если они будут найдены, добавьте эти записи в таблицу Archive
SELECT *
FROM Client
WHERE TIMESTAMP >= sysdate -1;
Мне нужно создать процедуру PL/SQL, которая вставляет эти записи в таблицу архива с Newest = 'y'. Новейший - столбец в архивной таблице. И удалите Newest = 'y' из старых записей, которые уже находятся в архивной таблице.
Я застрял здесь
CREATE OR REPLACE PROCEDURE add_to_arch(
arch_ archive%rowtype)
as
begin
SELECT *
FROM Client
WHERE TIMESTAMP >= sysdate -1;
loop
INSERT
INTO archive
(
CLIENT_ID,
NAME,
SURNAME,
PHONE,
VEH_ID,
REG_NO,
MADE_MODEL,
MAKE_YEAR,
WD_ID,
WORK_DESC,
INV_ID,
INV_SERIES,
INV_NUM,
INV_DATE,
INV_PRICE
)
SELECT CL_ID,
CL_NAME,
CL_SURNAME,
CL_PHONE,
VEH_ID,
VEH_REG_NO,
VEH_MODEL,
VEH_MAKE_YEAR,
WD_ID,
WORK_DESC,
INV_ID,
INV_SERIES,
INV_NUM,
INV_DATE,
INV_PRICE
FROM CLIENT, INVOICE, VEHICLE, WORKS, WORKS_DONE
WHERE CL_ID = arch_.Client_ID;
end loop;
END;
Хорошо, что я понимаю, но я не уверен, как написать эту бизнес-логику, когда мне нужно перенести их в архивную таблицу со столбцом. Новая поговорка «y». Я должен сделать это в процедуре, которая не срабатывает! – Mairis
@Mairis Вы пытаетесь изобрести колесо. Поиск в Интернете, как хранить исторические данные. Если кто-то другой попытается изменить таблицу не через вашу процедуру, тогда старые данные не будут отображаться в исторической таблице. –
Как обновить столбец при вставке новой записи? – Mairis