导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请问触发器的问题?

lifeforu 北京赛智科技有限公司 项目经理  2003-01-08 03:20:42
drop trigger test
go
create trigger test on table
--这里我想加个判断,如果是指定的用户才可以进行操作,不知如何处理,请指教(if exists select SYSTEM_USER='MyUser' then INSTEAD else For)
OF DELETE,INSERT,UPDATE
as
print '对不起,权限不够!操作未能执行.'

还有个问题就是在企业管理器里把表名改了就能进行操作了,如何限制
...全文
6 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifeforu 2003-01-09
create trigger test on Table
For DELETE,INSERT,UPDATE
as
if( SYSTEM_USER<>'MyUser')
begin
print '对不起,权限不够!操作未能执行.'
rollback
return
end
回复
lifeforu 2003-01-08
好!
谢谢
明天去公司试试再结贴
回复
j9988 2003-01-08
触发器本身就是一个事务。
回复
lifeforu 2003-01-08
谢谢提供这种思路,
但是有个问题想请教一下:
没有定义事务开始就可以进行回滚?
没试过不知道行不行
回复
j9988 2003-01-08
declare @loginame varchar(20)
select @loginame=loginame from master..sysprocesses where spid=@@spid
if @loginame<>'use1' and ...
begin
print ''
roalback
return
end
回复
j9988 2003-01-08
declare @loginame varchar(20)
select @loginame=loginame from sysprocesses where spid=@@spid
if @loginame<>'use1' and ...
begin
print ''
roalback
return
end

不过还是在前台控制好。
回复
lifeforu 2003-01-08
我的触发器的意思是让一般不会高级操作的用户不能操作表数据,必须由我的程序来操作,
create trigger test on table
INSTEAD OF DELETE,INSERT,UPDATE
as
print '对不起,权限不够!操作未能执行.'
如果是这样的话那么任何UPDATE,DELETE,INSERT操作都不能在查询分析器或是企业管理器里执行(如果不改名或是删掉触发器)
这样就有个问题,我的程序所用的SQL用户也不能进行操作了
不知道明白我的意思没有
回复
j9988 2003-01-08
它系统管理员用户权限一样,可执行任何系统命令。增加系统用户等等。
回复
j9988 2003-01-08
SA权限权是超级用户,绝对没招!

回复
lifeforu 2003-01-08
不行,用户拥用SA权限,我是想让一般的用户不能动我的数据
回复
j9988 2003-01-08
你直接在用户角色中设置,对表的操作权限。
然后让用户属于这个角色,就行了。
回复
lifeforu 2003-01-08
有人可以给点意见吗?
回复
lifeforu 2003-01-08
当然是SQL定义的用户,我的想法是除开改表名或删触发器之外如果不是用指定的用户登录的话就不能对表进行操作,我这里的用户就是指system_user
回复
Chiff 2003-01-08
用户,是指sql定义的用户,还是你自己那套系统的用户?
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告