最近做個項目要求挺多的,其中一條就是記錄關於資料記錄的動作記錄,而且日誌要可以分析的.
於是乎我開始分析這個需求:
1、以前我做的其它項目大多隻要細化到誰改了,什麼時間改的.就差不多了.可是這次那幫傢伙哦要求的可以分析資料的來龍去脈,也就是說要記錄這條資料是誰,什麼時間,內容,建立的。還有誰什麼時間改的,改了什麼內容。誰什麼時間刪除了這條記錄。
2、從上面我理清了要做的三件事:1、建立時寫日誌2、每次修改寫日誌3、刪除時寫日誌
3、於是乎我要考慮日誌表和實體表之間的關係,每個實體表對應一個日誌表.
日誌表中多三個欄位XGR--修改人 XGSJ--修改時間 XGLX--修改類型(可以是“INSERT、UPDATE、DELETE”),而且BH也不可以做標識的(實體表裡的BH要做標識).
4、實現這三件事的Sql.資料表的結構如下
對應資料來源配置的Sql語句:
Select :
Select * from SCD_SGRYYFB
Update :
Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@BH,@BS,@RYFL,@XGR,getDate(),'UPDATE')
Update [SCD_SGRYYFB] set [ZAH]=@ZAH,RQ=@RQ,RS=@RS,BS=@BS,RYFL=@RYFL where BH=@BH
INSERT:
Insert into SCD_SGRYYFB([ZAH], [RQ], [RS], [BS],RYFL)
values(@ZAH,@RQ,@RS,1,@RYFL)
declare @@varBH int
select @@varBH=@@identity
Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@@varBH ,1,@RYFL,@XGR,getDate(),'INSERT')
DELETE :
Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@BH ,@BS,RYFL,@XGR,getDate(),'DELETE')
Delete from SCD_SGRYYFB where BH=@BH
@XGR賦值:
protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@XGR"].Value = User.Identity.Name;//這句要自己客戶化的,要求取當前系統登陸使用者的ID
}
protected void SqlDataSource1_Deleting(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@XGR"].Value = User.Identity.Name;//這句要自己客戶化的,要求取當前系統登陸使用者的ID
}
protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@XGR"].Value = User.Identity.Name;//這句要自己客戶化的,要求取當前系統登陸使用者的ID
}