рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд░реЛрд▓рдмреИрдХ рд╕рдВрдкрд╛рджрди



рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рдЬреНрдп-рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рджреБрд░реНрдЬреЗрдп рд░рд╛рдЬрд╛ рд░рд╣рддрд╛ рдерд╛ред рдФрд░ tsar рдХреЗ рдкрд╛рд╕ рдХрдИ рд▓рдбрд╝рдХреЗ рдереЗ рдЬреЛ рджрд┐рди-рдкреНрд░рддрд┐рджрд┐рди рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░рддреЗ рдереЗ: рдХрд┐рддрдиреЗ рд╕реИрдирд┐рдХ рд╕реЗрд╡рд╛ рдореЗрдВ рдереЗ, рдХреНрдпрд╛ рд╢рд╛рд╣реА рдЦрдЬрд╛рдирд╛ рдорд╣рд╛рди рдерд╛, рдХреНрдпрд╛ рдЗрд╕ рд╕рд╛рд▓ рдЧреЗрд╣реВрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдФрд░ рдХрд┐рддрдиреА рдЧрд╛рдпреЛрдВ рдиреЗ рджреВрдз рджрд┐рдпрд╛ рдерд╛ред



Tsar рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ tsiferka рдХреЗ рдЦрд┐рд▓рд╛рдл рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдореЗрдВ, рдЙрд╕реЗ рдЧрд┐рдирддреЗ рд╣реБрдП рдмреЛрдпрд╛рд░ рдХрд╛ рдирд╛рдо рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рд╛рдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрдврд╝рдИ рдХреЛ рд╡рд┐рджреЗрд╢реА рдЪрд┐рддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рддрдВрддреНрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рдпрджрд┐ рдХреЛрдИ рднреА рд▓рдбрд╝рдХрд╛ рдЧрд▓рддреА рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд░реИрдХ рдкрд░, рдФрд░ рдЭреВрдареЗ рдирдВрдмрд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗред



рдХрд╛рд░рдкреЗрдВрдЯрд░реЛрдВ рдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдмрдиреЗ рдЪрд┐рддреНрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдУрд░реЗрдХрд▓ рдлреНрд▓реИрд╢рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░ рд╕рдВрджреЗрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, UNDO_RETENTION рд▓реАрд╡рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 3 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ, рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд░реНрд╖ рддрдХ рдХрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрдирд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЗ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рдбреВрдмрдирд╛ рдирд╣реАрдВред рд╣рдордиреЗ рдЙрдирдХреЗ рдЕрдкрдиреЗ рддрдВрддреНрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред



рдХрд┐рд╕реНрд╕реЗ рдЦрддреНрдо рд╣реЛ рдЧрдП, рдлрд┐рд░ рддрдВрддреНрд░ рдХрд╛ рдХрдареЛрд░ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрдиред





рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╣реИ, рдЗрд╕рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА, рдПрдХ рд╕реМ рд╕реВрдЪрдирд╛ рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА: рдЬрд┐рд╕ рддрд┐рдерд┐ рдХреЛ рд▓рд╛рдЗрди рдмрдирд╛рдИ рдпрд╛ рдмрджрд▓реА рдЧрдИ рдереА, рдЙрд╕ рд▓рдбрд╝рдХреЗ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрд┐рд╕рдиреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрди рдмрдирд╛рдИ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХреА рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдмреЛрдпрд╛рд░ рдЙрд╕реЗ рдЬреНрдЮрд╛рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдХреЛ рднрд░рддрд╛ рд╣реИ, рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рд▓рдбрд╝рдХреЛрдВ рд╕реЗ рднрд░реЗ рд╣реБрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред



create table MAIN_TABLE (

ID number primary key ,

INFO_FIELD1 number,

INFO_FIELD2 varchar2(100),

INFO_FIELD3 date ,

тАж

CREATE_DATE date default sysdate,

CREATE_USER_ID number NOT NULL ,

UPDATE_DATE date ,

UPDATE_USER_ID number

)

partition by range ( CREATE_DATE ) тАж

;











рд╕рдВрд╢реЛрдзрди рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛрд╣рд░рд╛рддреА рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ CREATE_DATE, CREATE_USER_ID рдлрд╝реАрд▓реНрдб рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИ - рдпреЗ рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рд░рдХрд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдЪрд╛рдмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЙрд╕ рддрд╛рд░реАрдЦ рд╕реЗ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд┐рдерд┐ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд┐рдерд┐ рдХреЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд╕реЗ рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрдкрд╛рджрди рд╡рд╛рд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдпрд╛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред



create table HISTORY_TABLE (

ID number,

INFO_FIELD1 number,

INFO_FIELD2 varchar2(100),

INFO_FIELD3 date ,

тАж

UPDATE_DATE date ,

UPDATE_USER_ID number

)

partition by range ( UPDATE_DATE ) тАж

;











рдЕрдм, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ ID рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рди ID рдХреЗ рд╕рд╛рде рдХрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ UPDATE_DATE рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВред



рдХреЛрд░реЛрд▓рд░реА 1 : рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореБрдЦреНрдп рдХреЗ рд╕рдВрдкрд╛рджрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдХреЛрд░реЛрд▓рд░реА 2 : рдпрджрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА рднреА рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЖрдИрдбреА рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИред



рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдврд╝рдИ рдиреЗ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ред рдЕрдиреНрдп рд╕рднреА рдХреЗ рдмреАрдЪ рдмрджрд▓реЗ рд╣реБрдП рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ - рд╣рдо NULL рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдПрдбрд┐рдЯ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдмреБрд░реА рдХрд┐рд╕реНрдордд, рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдмреЛрдпрд░реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд░реЗ рд╣реБрдП рдЦреЗрддреЛрдВ рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, NULL рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ - рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред NULL рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рдореВрд▓реНрдп рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рдорд░реНрдЬреА рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рднреА рдХреЛрд╖рд╛рдзреНрдпрдХреНрд╖ рдХреЛрд╖рд╛рдЧрд╛рд░ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп tsar рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдпрджрд┐ рд╣рдо рдореВрд▓реНрдп -99 (рджрд┐рдирд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП 01/01/1970) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрд╢рди рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХреЛрдб рдХреЛ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╕рджреНрднрд╛рд╡ рдмрд╣рд╛рд▓ рд╣реЛрддрд╛ рд╣реИред



create or replace trigger TRG_MAIN_BEFORE_UPD

before update on MAIN_TABLE

for each row

declare

HIST HISTORY_TABLE %ROWTYPE;

begin



HIST.ID := : OLD .ID;



if (: OLD .UPDATE_DATE is null ) then

-- -



HIST.UPDATE_DATE := : OLD .CREATE_DATE;

HIST.UPDATE_USER_ID := : OLD .CREATE_USER_ID;



HIST.INFO_FIELD1 := : OLD .INFO_FIELD1;

HIST.INFO_FIELD2 := : OLD .INFO_FIELD2;

HIST.INFO_FIELD3 := : OLD .INFO_FIELD3;



else

-- - ,

-- , NULL

-- NULL,



HIST.UPDATE_DATE := : OLD .UPDATE_DATE;

HIST.UPDATE_USER_ID := : OLD .UPDATE_USER_ID;



if nvl(: NEW .INFO_FIELD1, -99) <> nvl(: OLD .INFO_FIELD1, -99) then

HIST.INFO_FIELD1 := nvl(: OLD .INFO_FIELD1, -99);

end if ;



if nvl(: NEW .INFO_FIELD2, '-99' ) <> nvl(: OLD .INFO_FIELD2, '-99' ) then

HIST.INFO_FIELD2 := nvl(: OLD .INFO_FIELD2, '-99' );

end if ;



if nvl(: NEW .INFO_FIELD3, to_date( '01.01.1970' , 'dd.mm.yyyy' )) <>

nvl(: OLD .INFO_FIELD3, to_date( '01.01.1970' , 'dd.mm.yyyy' )) then

HIST.INFO_FIELD3 :=

nvl(: OLD .INFO_FIELD3, to_date( '01.01.1970' , 'dd.mm.yyyy' ));

end if ;



end if ;



--

insert into HISTORY_TABLE (ID, UPDATE_DATE, UPDATE_USER_ID,

INFO_FIELD1, INFO_FIELD2, INFO_FIELD3)

values (HIST.ID, HIST.UPDATE_DATE, HIST.UPDATE_USER_ID,

HIST.INFO_FIELD1, INFO_FIELD2, HIST.INFO_FIELD3);



end TRG_MAIN_BEFORE_UPD;



* This source code was highlighted with Source Code Highlighter .








рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЪреБрдирдирд╛, рдЖрдк рддреБрд░рдВрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕рдиреЗ рдХреЛрдИ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ:



select *

from HISTORY_TABLE

where ID = 1

oder by UPDATE_DATE;





---------------------------------------------------------------------------

ID | INFO_FIELD1 | INFO_FIELD2 | INFO_FIELD3 | UPDATE_DATE | UPDATE_USER_ID

---------------------------------------------------------------------------

1 12 AAA 05.11.2010 1

1 -99 01.11.2010 06.11.2010 2

1 BBB 07.11.2010 3











рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рдиреЗ рддреАрд╕рд░реЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП (рдЦрд╛рд▓реА рдЫреЛрдбрд╝рдХрд░) рдкрд╣рд▓реЗ рджреЛ рд╕реВрдЪрдирд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рдЕрдЧрд▓реЗ рджрд┐рди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 рдиреЗ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдореВрд▓реНрдп рдорд┐рдЯрд╛ рджрд┐рдпрд╛ (рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЧрд▓рдд рдорд╛рдирд╛ рдЧрдпрд╛) рдФрд░ рддреАрд╕рд░реЗ рдореЗрдВ рднрд░рд╛ред рдПрдХ рджрд┐рди рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 3 рдиреЗ рджреВрд╕рд░реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдкрд╣рд▓рд╛ рдЦрд╛рд▓реА рд░рд╣рд╛ред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпреЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдВрдкрд╛рджрди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХ 07.11.2010 рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИрдВред рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ, рдЬреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред



рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдИрдбреА рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд┐рдерд┐ рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдпрд╣ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред



рд░рд╛рдЬрд╛ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рддрдВрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЫреЗрдж (NULL) рдХреЛ рдЙрд╕ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдореВрд▓реНрдп рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ -99 рдХреЗ рдЕрд╕рдВрднрд╡ рдореВрд▓реНрдпреЛрдВ рдХреЛ NULL рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдврд╝рдИ рдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рджреА:



create or replace view V_HISTORY_RESTORE (

ID,

INFO_FIELD1,

INFO_FIELD2,

INFO_FIELD3,



UPDATE_DATE,

UPDATE_USER_ID

)

as

select

ID,



case

when LAST_VALUE(INFO_FIELD1 ignore NULLS) over (partition by ID order by UPDATE_DATE) = -99

then NULL

else

LAST_VALUE(INFO_FIELD1 ignore NULLS) over (partition by ID order by UPDATE_DATE)

end as INFO_FIELD1,



case

when LAST_VALUE(INFO_FIELD2 ignore NULLS) over (partition by ID order by UPDATE_DATE) = '-99'

then NULL

else

LAST_VALUE(INFO_FIELD2 ignore NULLS) over (partition by ID order by UPDATE_DATE)

end as INFO_FIELD2,



case

when LAST_VALUE(INFO_FIELD3 ignore NULLS) over (partition by ID order by UPDATE_DATE) = to_date( '01.01.1970' , 'dd.mm.yyyy' )

then NULL

else

LAST_VALUE(INFO_FIELD3 ignore NULLS) over (partition by ID order by UPDATE_DATE)

end as INFO_FIELD3,



UPDATE_DATE,

UPDATE_USER_ID



from HISTORY_TABLE;



* This source code was highlighted with Source Code Highlighter .








рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо NULLS рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдирджреЗрдЦреА рдХреЗ рд╕рд╛рде LAST_VALUE рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдорд╛рди рдХреЛ рдкрд┐рдЫрд▓реА (рджрд┐рдирд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХреА рдЧрдИ) рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИ рдпрджрд┐ рд╡рд╣ NULL рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╣ NULL рд╣реИ - рд╣рдо рддрдм рддрдХ рдКрдВрдЪреЗ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдПрдХ рдЧреИрд░-рдЦрд╛рд▓реА рдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВред



рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЪреБрдирдирд╛, рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:



select *

from V_HISTORY_RESTORE

where ID = 1

oder by UPDATE_DATE;





---------------------------------------------------------------------------

ID | INFO_FIELD1 | INFO_FIELD2 | INFO_FIELD3 | UPDATE_DATE | UPDATE_USER_ID

---------------------------------------------------------------------------

1 12 AAA 05.11.2010 1

1 AAA 01.11.2010 06.11.2010 2

1 BBB 01.11.2010 07.11.2010 3











рдЕрдм, рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдкрд╛рджрди рдХреА рддрд╛рд░реАрдЦ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЪреВрдВрдХрд┐ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рд╣реИ, рдЗрддрд┐рд╣рд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдФрд░ рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рдЕрддреАрдд рдореЗрдВ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд▓ рдореЗрдВ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдлрд┐рд▓реНрдо "рдмреИрдХ рдЯреВ рдж рдлреНрдпреВрдЪрд░") рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВред



рдмреЗрд╣реВрджрд╛ рдЕрднрд╛рд╡реЛрдВ рдХреЗ рдпреЛрдЧрджрд╛рди рдХреЛ рдЕрдирд╛рддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдореЗрдЬ рд╕реЗ рдЙрдирдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдЦрд░рд╛рдм рд╕рдВрдкрд╛рджрди рд╡рд╛рд▓реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рд▓рд╛рдЗрди рдХреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред



рдпрд╣ рдХрд╣рд╛рдиреА рдХрд╛ рдЕрдВрдд рд╣реИред рд░рд╛рдЬрд╛ рдкреНрд░рд╕рдиреНрди рд╣реБрдЖред

рддрдВрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд▓рдЪреАрд▓реЗ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб, рдХреМрди рд╕реА рддрд╛рд▓рд┐рдХрд╛рдПрдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдХрд╣рд╛рдиреА рдЕрдзрд┐рдХ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдкреЗрд╕ рдХреЛ рдореБрдХреНрдд рдХрд░рдХреЗ, рд░рд╛рдЬрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрди рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдЪреАрдЬ рдЦрд░рд╛рдм рд╣реИ - рдмрдврд╝рдИ рдпрд╣ рд╕рдм рдХрд╛рдЯ рдХрд░ рдердХ рдЧрдП рд╣реИрдВред рдФрд░ рдПрдХ рдЦрддрд░рд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрдлреНрдЯреА рдЖрдПрдЧрд╛, рдлрд╝реАрд▓реНрдб рдХреЛ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдЧрд╛ред рдЯреЗрдврд╝реЗ рд╣рд╛рдереЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдИ рдмрдЪрд╛рд╡ рдирд╣реАрдВ рд╣реИред



рдПрдХ рд╕реНрдиреИрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдЗрддрд┐рд╣рд╛рд╕



рдкреАрдПрд╕ рдореЗрд░реА рдмрд╛рдЗрдХред рдореИрдВ рдЕрднрд┐рдирд╡ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди Google рдЦреЛрдЬреЛрдВ рдиреЗ рдХрд┐рд╕реА рднреА рдПрдирд╛рд▓реЙрдЧ рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдХреА рддрд╕реНрд╡реАрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрджреА рдЧрдИ рд╣реИред



All Articles