首页 新闻 会员 周边

sql server2005中,用触发器禁止删除表的内容

0
悬赏园豆:5 [已关闭问题]

如题,

项目中碰到的问题:sql server2005中,用触发器禁止删除表的内容,因为项目中的功能按钮都是保存在数据库中,系统发布之后就不能让用户删除数据库中某些表里面的内容。

我应该怎么写触发器?或者有什么别的好办法。。

谢谢大家

share your knowledge with the world!的主页 share your knowledge with the world! | 初学一级 | 园豆:197
提问于:2008-12-15 18:42
< >
分享
其他回答(5)
0

不让用户删除这样的功能应该放在程序中,只要程序不提供相应的接口用户当然删不了吧,何必使用触发器

如果一定要用,就建一个before delete的触发器,什么都不干就直接上抛一个错误,这样就会中止事务,外部程序接受到一个异常

Gray Zhang | 园豆:17610 (专家六级) | 2008-12-15 19:53
0

我想在大部分项目里面,都不会去 delete数据。一般都会采用软删除(就是更新数据的状态为不可见)。
触发器呢,删除的数据 在 deleted表,表结构跟数据表的结构是一样的。你可以搜一下,delete 触发器

码尔代夫iimax | 园豆:3138 (老鸟四级) | 2008-12-15 19:56
0

不给用户删除的权限就行了,不用触发器,数据库连接所使用的用户的权限列表中禁止用户删除的权限!

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-15 20:50
0

路过,学习了....

Jared.Nie | 园豆:1940 (小虾三级) | 2008-12-15 23:16
0

最直接的办法就是不给用户提供删除的功能.其次,就是Gray Zhang说的,直接抛出一个异常,组织事务的发生.要不就在系统中增加一个权限,有权限的让删,没有的就不让删好了.

有所为,有所不为 | 园豆:1200 (小虾三级) | 2008-12-17 10:40
0

哥们,你可以尝试用 Instead of deleted触发器,

再触发器里写上Print '就不让你删除'

roboth | 园豆:28 (初学一级) | 2008-12-25 09:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册