SQLite TRIGGERS/觸發器    [動態紀錄資料庫變動]

SQLite TRIGGERS/觸發器    [動態紀錄資料庫變動]

SQLite TRIGGERS/觸發器    [動態紀錄資料庫變動]

資料來源:http://tw.gitbook.net/sqlite/sqlite_triggers.html

例子

01. 讓我們考慮一個情況下,我們要保持審核COMPANY表中的每一條記錄被插入我們新創建如下(如果已經擁有它,刪除COMPANY表)試用:

    sqlite> CREATE TABLE COMPANY(
       ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL
    );

02. 為了保持審計的試驗,我們將創建一個新的表被AUDIT將被插入日誌消息每當有一個新的記錄項表COMPANY:

    sqlite> CREATE TABLE AUDIT(
        EMP_ID INT NOT NULL,
        ENTRY_DATE TEXT NOT NULL
    );
    
03. 在這裡,ID是的審計記錄ID,EMP_ID的ID將來自COMPANY表和日期將保持COMPANY表時的記錄將被創建時間戳。所以,現在讓我們創建一個觸發器,COMPANY表如下:

    sqlite> CREATE TRIGGER audit_log AFTER INSERT 
    ON COMPANY
    BEGIN
       INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime(‘now’));
    END;

04. 現在,我們將開始實際工作中,讓我們開始COMPANY表中插入記錄,這將導致在AUDIT表中創建審計日誌記錄。因此,讓我們創建一個COMPANY表記錄如下:

    sqlite> INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, ‘Paul’, 32, ‘California’, 20000.00 );
    
05. 列出TRIGGERS-可以列出所有觸發器從SQLITE_MASTER表如下:

    sqlite> SELECT name FROM sqlite_master WHERE type = ‘trigger’;

    以上SQLite語句也會列出隻有一個條目如下:

    name
    ———-
    audit_log

06. 如果要列出特定表上的觸發器,然後使用AND子句及表名如下:

    sqlite> SELECT name FROM sqlite_master WHERE type = ‘trigger’ AND tbl_name = ‘COMPANY’;
    
    以上SQLite語句也會列出隻有一個條目如下:

    name
    ———-
    audit_log    
    
07. 刪除 TRIGGERS-以下是DROP命令,它可以用來刪除一個現有的觸發器:

    sqlite> DROP TRIGGER trigger_name;

 

 

 


 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *