將常被要求當資料表內的紀錄有被新增修改或刪除的時候,需要同步紀錄每次資料表變動的前後資料,這時候我們可以利用 Trigger 便可做到符合這個功能的需求,而且可以適用到大部份的使用情境,且因為 Trigger 本身也可以捕抓捉到資料庫的 DML 的事件,如 : INSERT、UPDATE 、DELETE ,我們也能捕捉在該資料列被修改之後 (AFTER DML) 才來執行 Trigger ,所以剛好滿足我們要記錄的資料表變動的行為。
OUTPUT 子句於 UPDATE、DELETE 的應用
我想很多人在專案進行中,大部分都會遇到要把資料庫的Schema匯出來,
若有好習慣的話會在每個資料欄位作描述註解,這時若可以直接由資料庫匯出所有資料表的Meta Data的話,
那就太好了可不是嗎?
當然我也曾遇過這個問題,當時幸好有孤影的SchemaGen,己解決了我大部分的問題,
不過他的指支援MS SQL 2000,我暫時還沒找到有MS SQL 2005版本.所以,花了點時間研究一下MS SQL 2005的作法,
以下是我的方法,可匯出所有資料表每個欄位名稱、資料型態、資料長度、描述
這是一個MS SQL 的判斷欄位值內是否有包含英文大小寫及數字以外的字元,
我們可以利用PATINDEX()函數來處理這個問題,
這也是看了大鈞判斷資料欄位是否有中文字(使用ASCII比對及PATINDEX兩種方法)文章的靈感,
也剛好論壇的朋友恰好遇到此問題,於是我還是把這個ㄤ法做一下紀錄囉!
延續著上一篇直接使用SQL SERVER 2005 開啟XML檔案並讀取內容(一)-應用xp_cmdshell文章,我在提供另一個方法來處理XML檔,當然還有許多種方法可以做處理,等有閒時在多加補充幾個方法。