全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1557
推到 Plurk!
推到 Facebook!

資料庫異動查詢問題

答題得分者是:clin8870
sky11167
一般會員


發表:3
回覆:9
積分:1
註冊:2006-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-02 08:29:32 IP:61.219.xxx.xxx 訂閱
各位前輩早安
後學想請教 前輩們 資料庫查詢問題
EX.如何知道過去半小時內,哪些資料表已經被異動呢?
異動的情況包括:新增OR修改OR刪除.
不知道前輩們是否有類似這種監控資料庫活動之經驗可供分享
如果有那就太棒了!!! 感恩各位前輩指導!謝謝大家!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-02 08:45:08 IP:60.248.xxx.xxx 未訂閱

看Log檔,試試Lumigent Log Explorer

http://www.lumigent.com/products/le_sql.html

sky11167
一般會員


發表:3
回覆:9
積分:1
註冊:2006-07-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-02 11:06:55 IP:61.219.xxx.xxx 訂閱

pedro756901前輩您好
謝謝您的回覆,您的建議如下
看Log檔,試試Lumigent Log Explorer
http://www.lumigent.com/products/le_sql.html
後學有去看過這個網頁,然而是不是要花錢去買這個產品呢?
有沒有可以不必花費,利用資料庫目前已有的功能就可以達到所要的需求呢.
感恩您

附註:後學的資料庫是sql2000

clin8870
一般會員


發表:0
回覆:8
積分:6
註冊:2006-08-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-08-03 23:22:34 IP:59.113.xxx.xxx 未訂閱

Concept 很簡單,實作就不一定…

簡單的說,在每一個 table, 都加一個 column, 叫 record time, 紀錄當時的時間。

然後,在後端的應用程式,每當新增、修改時,加入 record time

刪除較討厭,要用一個 flag, 比如說 T 或 F 來代表是否是現役的資料。

假如能克服,那麼,若你要查 30 分鐘改變的資料,就下 SQL , 看 record time < sysdate - (30/60/24)

的資料筆數,就可以了。

對於一般透過後端應用程式來使用資料庫的 user, 可行。但如果有用仁直接連 database 偷改資料,就不成了。

最後,要記得寫一個自動執行的程式,固定去清 database 應刪除的 data. 不然 table 會越長越大,效能變差。

sky11167
一般會員


發表:3
回覆:9
積分:1
註冊:2006-07-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-08-04 08:22:05 IP:61.219.xxx.xxx 訂閱

clin8870前輩早安
感激前輩的回覆,可是我有3處不懂的地方,如下:

1.若要查30分鐘改變的資料,就下SQL,看record time 請教前輩:如果有20個資料表,那要如何下指令.目前後學只會一個一個table看
ex. select record time 前輩是否有建議的指令可以1次下完20個table,使其一次出現在畫面嗎.

2.最後要記得寫1自動執行程式,固定去清 database應刪除的data.不然table會越長越大,效能變差。
請教前輩您的意思是:要將曾經紀錄過的欄位[record time]清成空白嗎? 謝謝您

3.刪除較討厭,要用一個 flag, 比如說 T 或 F 來代表是否是現役的資料
請教前輩這一句話的意思,後學不懂.不知您是否有空說詳細一點.感恩您.

Arvin2006
一般會員


發表:0
回覆:2
積分:0
註冊:2006-08-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-08-05 08:41:37 IP:59.41.xxx.xxx 未訂閱
在你的数据库中另加一个表,记录你所有的数据表名,最后操作时间,不用管其它的表,只要在每次更新表记录时,增加一条刷新你新增表的语句就可以了,你要知道最近30分钟那些表的数据有改动,或者改动过几次都可以查到了,你再增加一些字段,记录你对相关表进行的操作类别,还可以查出更加详细的东西。
------
找一个地方可以安静的写程序
patrickjoey
一般會員


發表:1
回覆:2
積分:0
註冊:2006-08-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-08-11 15:40:52 IP:61.224.xxx.xxx 未訂閱

===================引 用 文 章===================

clin8870前輩早安
感激前輩的回覆,可是我有3處不懂的地方,如下:

1.若要查30分鐘改變的資料,就下SQL,看record time 請教前輩:如果有20個資料表,那要如何下指令.目前後學只會一個一個table看
ex. select record time 前輩是否有建議的指令可以1次下完20個table,使其一次出現在畫面嗎.

你必須知道每個table的關聯~然後用join的方式就可以了

2.最後要記得寫1自動執行程式,固定去清 database應刪除的data.不然table會越長越大,效能變差。
請教前輩您的意思是:要將曾經紀錄過的欄位[record time]清成空白嗎? 謝謝您

本來刪除是將資料從資料庫刪除~~現在是將他做註記並沒有刪掉~~所以需要固定時間將資料從資料庫刪除否

則會越來越大~~影響到效能

3.刪除較討厭,要用一個 flag, 比如說 T 或 F 來代表是否是現役的資料
請教前輩這一句話的意思,後學不懂.不知您是否有空說詳細一點.感恩您.

使用Flag~來標示此筆資料是否是存在的~~T:代表存在 F:代表刪除的資料~~~

clin8870
一般會員


發表:0
回覆:8
積分:6
註冊:2006-08-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-08-11 23:40:03 IP:59.113.xxx.xxx 未訂閱

Sorry, 這幾天沒看討論區 (這幾天都在混 yahoo 的購物中心.....)

感謝 patricjoey 兄的補充,只能說"深得我心哉"

對於第一點應有更其他的解法,其實不用 join, 用 union 就有整体的 table 了:

select count(table1 的某個 field) as 變動數目, 'talbe1' as 表格名稱 from table1
where recordtime < sysdate - (30/60/24)
union
select count(table2 的某個 field) as 變動數目, 'talbe2' as 表格名稱 from table2
where recordtime < sysdate - (30/60/24)
--------------------------------------用力寫其他十八個表格

這樣就會得到結果了。嗯,感覺是笨人用的笨招...............不過應可用

大家互相交流,別叫前輩。把人都叫老了......哈


===================引 用 文 章===================

clin8870前輩早安
感激前輩的回覆,可是我有3處不懂的地方,如下:

1.若要查30分鐘改變的資料,就下SQL,看record time 請教前輩:如果有20個資料表,那要如何下指令.目前後學只會一個一個table看
ex. select record time 前輩是否有建議的指令可以1次下完20個table,使其一次出現在畫面嗎.

你必須知道每個table的關聯~然後用join的方式就可以了

2.最後要記得寫1自動執行程式,固定去清 database應刪除的data.不然table會越長越大,效能變差。
請教前輩您的意思是:要將曾經紀錄過的欄位[record time]清成空白嗎? 謝謝您

本來刪除是將資料從資料庫刪除~~現在是將他做註記並沒有刪掉~~所以需要固定時間將資料從資料庫刪除否

則會越來越大~~影響到效能

3.刪除較討厭,要用一個 flag, 比如說 T 或 F 來代表是否是現役的資料
請教前輩這一句話的意思,後學不懂.不知您是否有空說詳細一點.感恩您.

使用Flag~來標示此筆資料是否是存在的~~T:代表存在 F:代表刪除的資料~~~

sky11167
一般會員


發表:3
回覆:9
積分:1
註冊:2006-07-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-08-14 09:02:44 IP:61.219.xxx.xxx 訂閱
三位高手早安:
非常感激
Arvin2006 回覆於950805
patrickjoey回覆於950811
clin8870 回覆於950811
雖然做法各有千秋,然都能一一解決後學目前困境.
於此真是感激不盡,請各位高手接受後學一鞠躬吧!-//
系統時間:2024-05-19 15:24:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!