Create New User in Oracle
CREATE User <UserName> IDENTIFIED BY <Passsword>;
Grant User necessary privileges
GRANT CREATE session TO <username>;
GRANT CREATE TABLE TO <username>;
GRANT CREATE TRIGGER TO <username>;
ALTER USER <username> QUOTA UNLIMITED ON <TablespaceName>
Create a Transactional Table
CREATE TABLE AD_DURATIONS
(
Ad_Duration_Cn Varchar2(10 Byte) Not Null Enable,
Ad_Start_Date Date Not Null Enable,
Ad_End_Date Date Not Null Enable,
Modified_By Varchar2(10 Byte),
Modified_Date Date Default Sysdate,
Constraint CJ_AD_DURATIONS_PK Primary Key (AD_DURATION_CN)
);
Insert value in the AD_DURATIONS Table
Insert Into Ad_Durations (Ad_Duration_Cn, Ad_Start_Date,
Ad_End_Date, Modified_By)
Values ('10001', To_Date('26-JUL-10', 'DD-MON-RR'),
To_Date('30-JUL-10', 'DD-MON-RR'), 'Tamim');
Insert Into Ad_Durations (Ad_Duration_Cn, Ad_Start_Date,
Ad_End_Date, Modified_By)
Values ('10002', To_Date('31-JUL-10', 'DD-MON-RR'),
To_Date('05-Aug-10', 'DD-MON-RR'), 'Khan');
Create a Log Table for AD_DURATIONS Data
Here Modified_By, Modified_Date and Action is Audit Column.
CREATE TABLE AD_DURATIONS_LOG
(
Ad_Duration_Cn Varchar2(10 Byte),
Ad_Start_Date Date,
Ad_End_Date Date,
Modified_By Varchar2(20 Byte),
Modified_Date Timestamp (6),
Action Varchar2(20 Byte)
);
Create a Trigger on AD_DURATIONS table
Create Or Replace TRIGGER AD_DURATIONS_LOG
AFTER DELETE OR UPDATE ON AD_DURATIONS
FOR EACH ROW
Begin
If Updating Then
Insert Into Ad_Durations_Log(Ad_Duration_Cn, Ad_Start_Date,
Ad_End_Date, Modified_By,Modified_Date,Action)
Values (:Old.Ad_Duration_Cn, :Old.Ad_Start_Date,:Old.Ad_End_Date,
:Old.Modified_By,:Old.Modified_Date,'Update');
Elsif Deleting Then
Insert Into Ad_Durations_Log(Ad_Duration_Cn, Ad_Start_Date,
Ad_End_Date, Modified_By,Modified_Date,Action)
Values (:Old.Ad_Duration_Cn, :Old.Ad_Start_Date, :Old.Ad_End_Date,
:Old.Modified_By,:Old.Modified_Date,'Delete');
End If;
END;
Update on AD_DURATIONS Table
Update Ad_Durations
Set Ad_End_Date = To_Date('31-JUL-10', 'DD-MON-RR')
Where Ad_Duration_Cn = 10001;
Update from AD_DURATIONS Table
Delete From Ad_Durations
Where Ad_Duration_Cn = 10002;
Now Selecting data from AD_DURATIONS_LOG Table.
Select * From Ad_Durations_Log;
No comments:
Post a Comment