alter table ... disable trigger all,如何知道Trigger的狀態?

magnetmoon 2003-10-24 02:15:47
使用alter table grd_det disable trigger all
可以屏蔽掉Trigger往表中插入數據,
但是為保証數據完整性,有時又不想讓用戶屏蔽掉Trigger,
能否知道Trigger是否被哪個用戶屏蔽掉了?
...全文
1296 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
magnetmoon 2003-10-27
  • 打赏
  • 举报
回复
因為數據庫放在服務器上,很多用戶都可以對它進行操作
主要是防止別的用戶使用alter table ... disable trigger all來修改數據


magnetmoon 2003-10-27
  • 打赏
  • 举报
回复
更新數據時,你是通過判斷:當前用戶是否在TRIGGER授权表中來決定是否能更新數據,
但是這是通過你的Trigger來判斷的,現在你的Trigger都被屏蔽掉了,怎么來判斷?
playyuer 2003-10-26
  • 打赏
  • 举报
回复
???
magnetmoon 2003-10-25
  • 打赏
  • 举报
回复
另alter table ... disable trigger all會屏蔽掉所有的Trigger
playyuer(双规干部)的Trigger并不會被執行
magnetmoon 2003-10-24
  • 打赏
  • 举报
回复
如果有1000個表,按 playyuer(双规干部) 的方法 就要寫1000個update Trigger

還有沒有別的方法?
DigJim 2003-10-24
  • 打赏
  • 举报
回复
UP
foow 2003-10-24
  • 打赏
  • 举报
回复
学习中!
playyuer 2003-10-24
  • 打赏
  • 举报
回复
TRIGGER授权表(usrname,.....)



CREATE TRIGGER xxxxxx
ON Txxxx
FOR update AS
if exists (select 1 from TRIGGER授权表 where usrname = user_name())
begin
update ...
set ....
--where user_name() <> 'sa'

end
playyuer 2003-10-24
  • 打赏
  • 举报
回复
用了这招你就不必 alter table ... disable trigger all!!!!!
下例: xxxxxx TRIGGER 实际对 sa 无效!
CREATE TRIGGER xxxxxx
ON Txxxx
FOR update AS
update ...
set ....
where user_name() <> 'sa'
playyuer 2003-10-24
  • 打赏
  • 举报
回复
CREATE TRIGGER xxxxxx
ON Txxxx
FOR update AS
update ...
set ....
where user_name() in (select usrname from 授权表)
pengdali 2003-10-24
  • 打赏
  • 举报
回复
用权限控制呢?
txlicenhe 2003-10-24
  • 打赏
  • 举报
回复
好象不知道。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧