要求Sql Server 数据库删除存储过程或数据表时,一定要先删除某个表或存储过程!

泡泡鱼_ 2005-08-10 04:09:36
要求Sql Server 数据库删除存储过程或数据表时,一定要先删除某个表或存储过程!

可以吗??

比如说:
有一个数据表A
在程序内可以通过执行语句删除该表的,但是我想要求,要删除这个表一定要先删除数据表B

想这样做的原因,是为了防止维护人员的误操作!!

对存储过程也想达到这种效果!!不知道可不可以???
...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2005-08-10
  • 打赏
  • 举报
回复
很感谢大家热心的解答!!!!

希望有对删除存储过程做限定的方法时能告诉我!!!
XLYT 2005-08-10
  • 打赏
  • 举报
回复
完全赞成。
zjcxc 2005-08-10
  • 打赏
  • 举报
回复
2. 存储过程做不到

3. sql 2005 可以做到, sql 2005 支持 ddl 触发器,可以在删除表时触发并且做你要求的检测.
zjcxc 2005-08-10
  • 打赏
  • 举报
回复
1. 对于表,可以增加一个辅助列,通过外键约束来实现这个目的
例如:
create table A(
aaa int identity(1,1) unique, --辅助列
id int)

create table B(
aaa int default 1 references A(aaa), --限制删除A表的辅助列
id int)
go

--直接删除
drop table A

/*--结果
服务器: 消息 3726,级别 16,状态 1,行 3
未能除去对象 'A',因为该对象正由一个 FOREIGN KEY 约束引用。
--*/
go

drop table b,a
tx1icenhe 2005-08-10
  • 打赏
  • 举报
回复
触发器可以做到“删除表A数据时,一定要先删除数据表B(或者数据表B的特定数据)”
至于“删除表A时,一定要先删除数据表B”,因为删除表操作是DDL,程序很难控制,我想正规的做法是通过权限控制的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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