ورود

View Full Version : سوال: ساخت یک تریگر برای کپی گرفتن از کل اطلاعات یک جدول (فارغ از تغییر) قبل از اپدیت



m.kh4030
جمعه 12 دی 1399, 01:23 صبح
با سلام و احترام
یک جدول در دیتا بیس اوراکل دارم که اطلاعات آن بصورت روزانه تغییر می کند و متاسفانه هیستوری کال نیست

با استفاده از کد زیر یک تریگر نوشتم ولی مشکل اینه که این تریگر صرفا رکوردهای که تغییر می کنند (INSERT,UPDATE,DELETE) را در جدول جدید با ذکر تاریخ درج می کنه

من میخوام کل رکوردهای های جدول اول بصورت روزانه در جدول دوم ذخیره شود (فارغ از اینکه تغییر کرده یا نکرده است)

جدول 1 = r99
جدول 2 = audit_table1

create table r99 (branch number(5) , cfcifno number(15) , mande number (20)) ;



create or replace trigger audit_table1
AFTER insert or delete or update on r99
FOR each row
BEGIN
INSERT INTO audit_table1 values (sysdate, :new.branch , :new.cfcifno , :old.mande, :new.mande) ;
END;



لطفا اساتید راهنمایی بفرمایید
متشکرم

hosseinruzi
شنبه 13 دی 1399, 23:15 عصر
به نظرم میتونید از materialized view استفاده کنید، تقریبا برای همین کاری که گفتید استفاده میشه و با استفاده از etl مورد نظرتون میتونید با جدول اصلی جوین بزنید با استفاده از pk جدول اصلی و جدول materialized view شده یا اگه pk نداره میتونید روی rownum جوین بزنید و در آخر جذول جدید بسازید و هر روز با یک جاب رفرشش کنید.

m.kh4030
یک شنبه 14 دی 1399, 12:08 عصر
به نظرم میتونید از materialized view استفاده کنید، تقریبا برای همین کاری که گفتید استفاده میشه و با استفاده از etl مورد نظرتون میتونید با جدول اصلی جوین بزنید با استفاده از pk جدول اصلی و جدول materialized view شده یا اگه pk نداره میتونید روی rownum جوین بزنید و در آخر جذول جدید بسازید و هر روز با یک جاب رفرشش کنید.

با سلام و تشکر
این مراحل خیلی زمان بر هست و من کامل متوجه منظور شما نشدم .

در ضمن جدول من روزانه حدود 30 میلیون رکورد رو باید در جدول جدید کپی بگیره

به نظرم اگر راهکاری باشه که بشه با یک تریگر اینکار و انجام داد نتیجه بهتری خواهدداشت

m.kh4030
یک شنبه 14 دی 1399, 14:26 عصر
به نظرم میتونید از materialized view استفاده کنید، تقریبا برای همین کاری که گفتید استفاده میشه و با استفاده از etl مورد نظرتون میتونید با جدول اصلی جوین بزنید با استفاده از pk جدول اصلی و جدول materialized view شده یا اگه pk نداره میتونید روی rownum جوین بزنید و در آخر جذول جدید بسازید و هر روز با یک جاب رفرشش کنید.

شما متوجه درخواست من نشدید
در روش materialized view صرفا اطلاعات یک جدول در جدول دیگر آپدیت می شود و ربطی به سوال من نداره

درخواست من ایجاد جدول هیستوری کال از روی جدول اصلی بود
که به صورت روزانه از روی جدول اصلی عملیات کپی جدول شامل تمامی فیلدها و اطلاعات (فارغ از اینکه فیلدی تغییر یافته یا خیر )
را در جدول هیستوری کال با درج تاریخ همان روز ثبت کند.

من در جدول اصلی 20 میلیون رکورد دارم ، بعضا بصورت روزانه اینها تغییراتی دارند
در جدول هستوریکال من باید برای هر روز همین 20 میلیون رکورد همراه با تغییراتی که داشتن با قید تاریخ ثبت گردد

m.kh4030
پنج شنبه 30 بهمن 1399, 20:28 عصر
یک ماه گذشت و هیچ جوابی !!!!
هیچ کس در این انجمن نیست گویا !!!!!