huangeider
高階會員
發表:288 回覆:492 積分:231 註冊:2003-02-26
發送簡訊給我
|
請教有一公司內有A,B,C,D,E五台電腦都連上一sql server主機
其中若由電腦A上修改sql server中tableA的資料時會令tableA上面的trigger
觸動,而由其他的電腦上修改sql server中tableA時並不會觸發trigger
不知sql做得到嗎? 堅持從洗馬桶做起
Eric
|
timhuang
尊榮會員
發表:78 回覆:1815 積分:1608 註冊:2002-07-15
發送簡訊給我
|
Hi, 這種需求是可以做得到的, 但是必須從 login 進 database 的使用者帳號上來區隔.
但不建議這麼做, 若是真的需要這樣的功能, 建議從 ap 的角度出發. 畢竟 trigger 使用在這方面不是很理想!
|
change.jian
版主
發表:29 回覆:620 積分:439 註冊:2003-06-02
發送簡訊給我
|
直接在trigger裡加上判斷要不要繼續執行的程式碼,如果不是A電腦的話,離跳離trigger.唯必需在table裡增加一個欄位記錄是那一台電腦輸入該筆資料,且該欄位的內容應由程式自動控制,這樣trigger程序才知道這筆資料是由那台電腦update的
|
huangeider
高階會員
發表:288 回覆:492 積分:231 註冊:2003-02-26
發送簡訊給我
|
Hi, 這種需求是可以做得到的, 但是必須從 login 進 database 的使用者帳號上來區隔.
但不建議這麼做, 若是真的需要這樣的功能, 建議從 ap 的角度出發. 畢竟 trigger 使用在這方面不是很理想!
請教 timhuang 兄
可知用那種方式以login的database使用者帳號來判定? 堅持從洗馬桶做起
Eric
|
arvinhsu
一般會員
發表:0 回覆:10 積分:7 註冊:2003-04-03
發送簡訊給我
|
你可以使用 SUSER_SNAME() 這函數來查詢目前登入的帳號,
然後再Trigger內再判斷是那個User 有執行的權限
|
huangeider
高階會員
發表:288 回覆:492 積分:231 註冊:2003-02-26
發送簡訊給我
|
小弟的需求是這樣的
在一個沒有程式碼的程式中,有許多電腦用這個程式連到主機,共用一個資料庫
,但是客戶需求是每台電腦都可以異動資料,而只有其中一台電腦異動時才會把
異動的資料存到一個特定的table,請教這功能還有其他方法能達成嗎?
小弟只想到用trigger這方式,而且判定login的方式在此情形來說似乎不可行
,因為連上資料庫是由此沒有程式碼的程式預設進入的,而此預設值無法更改,
也就是login資料庫的帳號是無法變更的 堅持從洗馬桶做起
Eric
|
timhuang
尊榮會員
發表:78 回覆:1815 積分:1608 註冊:2002-07-15
發送簡訊給我
|
真的是很糟的需求, 若是這樣的話, 最好還是使用使用者帳號來辨識, 真的非得要用 connection 上來的來源電腦的話, 可以使用 @@spid 這個變數來辨識自己連進來的 spid, 再掃 master..sysprocesses 中的 net_address 欄位來查出此 connection 的 mac address!!
如下: select net_address from master..sysprocesses where spid=@@spid
|