Bazı kurumlarda protokol tablosunu sürekli log’lamak büyük veri artışları getirebilir.Bu gibi durumlarda protokol tablosunun en önemli gerekçesi olan sadece kurum değiştiren bilgisini log’laya bilirsiniz.Bunun için;
SQL
Tablo SQL KODU
DROP TABLE HASTANE.PROTOKOL_DEGISEN_KURUM_LOG CASCADE CONSTRAINTS;
CREATE TABLE HASTANE.PROTOKOL_DEGISEN_KURUM_LOG
(
PROTOKOL_NO NUMBER,
KURUM_NO NUMBER,
YENI_KURUM_NO NUMBER,
KULLANICI_DEGISTIREN VARCHAR2(32 BYTE),
LOGTARIHI DATE
)
TABLESPACE USERS
RESULT_CACHE (MODE DEFAULT)
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE INDEX HASTANE.PROT_KURUMLOG_INDEX ON HASTANE.PROTOKOL_DEGISEN_KURUM_LOG
(LOGTARIHI)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
SQL
Triger SQL Kodu
CREATE OR REPLACE TRIGGER PROTOKOL_KURUM_NO
AFTER UPDATE OF KURUM_NO
ON PROTOKOL FOR EACH ROW
DECLARE
BEGIN
IF (:old.kurum_no <> :new.kurum_no)
THEN
INSERT INTO protokol_degisen_kurum_log (protokol_no,
kurum_no,
yeni_kurum_no,
kullanici_degistiren,
logtarihi)
VALUES (:OLD.protokol_no,
:old.kurum_no,
:NEW.kurum_no,
USER,
SYSDATE);
END IF;
END;
Ali Şahan Blog Bir avuç SQL C# Oracle Lunix