if object_id('Proc_DropTableWithFK') is not null
begin
drop proc dbo.Proc_DropTableWithFK
end
GO
create proc Proc_DropTableWithFK @PK_tableName nvarchar(50)
as
begin
declare test_cur cursor local for
select
o2.name as 'FK_name' ,
O3.name as 'Table_Name' from sysforeignkeys FK
inner join sys.objects o1 on FK.rkeyid=o1.object_id
inner join sys.objects o2 on FK.constid= o2.object_id
inner join sys.objects o3 on FK.fkeyid= o3.object_id
where o1.name=@PK_tableName
open test_cur
declare @FK_name nvarchar(255),@Table_Name nvarchar(255)
fetch next from test_cur into @FK_name,@Table_Name
while @@FETCH_STATUS=0
begin
exec('ALTER TABLE '+@Table_Name+' DROP CONSTRAINT '+@FK_name)
fetch next from test_cur into @FK_name,@Table_Name
end
close test_cur
deallocate test_cur
exec(' drop table '+@PK_tableName)
end go
if object_id('Sys_User') is not null
exec dbo.Proc_DropTableWithFK 'Sys_User'
GO
create table Sys_User
(
Sys_UserID int identity(1,1) primary key,
UserAccount nvarchar(255) not null,
UserPwd nvarchar(255) not null,
UserName nvarchar(255)
)
go
if object_id('Sys_powerTeam') is not null
exec dbo.Proc_DropTableWithFK 'Sys_powerTeam'
go
create table Sys_powerTeam
(
Sys_powerTeamID int identity(1,1),
PowerTeamName nvarchar(255) not null
)
go
if object_id('Sys_PowerTeamForUser') is not null
exec dbo.Proc_DropTableWithFK 'Sys_PowerTeamForUser'
go
create table Sys_PowerTeamForUser
(
Sys_PowerTeamForUserID int identity(1,1) primary key,
Sys_powerTeamID int,
Sys_UserID int
)
go
if object_id('Sys_Menu') is not null
exec dbo.Proc_DropTableWithFK 'Sys_Menu'
go
create table Sys_Menu
(
Sys_MenuID int identity(1,1) primary key,
Url nvarchar(255) ,
ParentId int ,
MenuName nvarchar(255) not null,
OrderNum int
)
go
if object_id('Sys_PowerTeamForMenu') is not null
exec dbo.Proc_DropTableWithFK 'Sys_PowerTeamForMenu'
go
create table Sys_PowerTeamForMenu
(
Sys_PowerTeamForMenu int identity(1,1) primary key,
Sys_powerTeamID int,
Sys_MenuID int
)
go

这是一个权限体系表结构的建立,没有外键关系。

Proc_DropTableWithFK 这个存储过程 传入要删除的表明,将会查询出他所有的外键表以及外键名称,在把这些集合放在游标里面,循环删除所有外键,最后在删除表。

未完待续。。。

sql server drop talbe 自动删除关联的外键 ,权限体系(一)的更多相关文章

  1. sql server drop talbe 自动删除关联的外键 ,权限体系(二)

    alter table dbo.Sys_PowerTeamForUser add constraint FK_Sys_User_Sys_PowerTeamForUser foreign key (Sy ...

  2. sql server小技巧-自动添加时间与主键自增长

    在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server ...

  3. [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法

    问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示:   类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...

  4. 【SQL Server DBA】维护语句:删除并创建外键约束、获取建表语句

    原文:[SQL Server DBA]维护语句:删除并创建外键约束.获取建表语句 1.删除外键约束,建立外键约束 先建立3个表: /* drop table tb drop table tb_b dr ...

  5. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  6. SQL Server 索引的自动维护 <第十三篇>

    在有大量事务的数据库中,表和索引随着时间的推移而碎片化.因此,为了增进性能,应该定期检查表和索引的碎片,并对具有大量碎片的进行整理. 1.确定当前数据库中所有需要分析碎片的表. 2.确定所有表和索引的 ...

  7. SQL Server数据库设置自动备份策略

    一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,能够完成大部分的数据库的维护任务. 数据库的备份也是日常工作中非常重要的一个环节.备份的方法非常的多. 今天给大家介绍最简单 ...

  8. MS SQL Server 定时任务实现自动备份

    SQL Server Express 版本是没有SQL 代理服务的,从而导致不能使用SQL Server的定时自动备份功能.真心感觉这就是一个坑,虽然Express是学习的版本,但是精简的也太多了.另 ...

  9. 【SQL Server性能优化】删除大量数据的方法比较

    原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...

随机推荐

  1. Redis实现分布式锁与任务队列

    Redis实现分布式锁 与 实现任务队列 这一次总结和分享用Redis实现分布式锁 与 实现任务队列 这两大强大的功能.先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说 ...

  2. 初步STL集装箱Vector

    vector 特点: 1.可变长的动态数组 2.使用时包括头文件 #include <vector> 3.支持随机訪问迭代器 • 依据下标随机訪问某个元素时间为常数 • 在尾部加入速度非常 ...

  3. 示例:Netty 处理 TCP数据分包协议

    一个.Netty解决TCP协议的数据分包的想法 我们知道通过TCP协议发送接收数据时,假设数据过大.接收到的数据会是分包的.比方:                                   ...

  4. hibernate在地图的方法之一协会

    [Hibernate]之关于多对一单向关联映射 在项目的开发中多对一的单向关联映射是最常见的关联映射! 这个着重具体解说一下! 比如,我们如今一个组(Group)和人(Person) id name ...

  5. Cocos3d-x 发布第一版

    从去年开始11一月,我开始一个又一个人cocos3d的C++改写版本号.现在见效.所有cocos3d的OC代码改写成了C++. 在正常Android和Windows在执行.上周,正式发布了第一个版本. ...

  6. “GDI+ 发生一般错误” 解决方法

    System.Runtime.InteropServices.ExternalException: GDI+ 发生一般错误 对应的帐户没有写权限,给予帐户写权限 版权声明:本文博主原创文章,博客,未经 ...

  7. [SQL Server优化]善用系统监视器,确定系统瓶颈

    原文:[SQL Server优化]善用系统监视器,确定系统瓶颈 来自: http://hi.baidu.com/solorez/blog/item/f82038fa0e71b78d9e51468c.h ...

  8. UVA714- Copying Books(最大最小化)

    意甲冠军:k手稿的部分成m部分,使每一个和最小 思路:典型最大值最小化问题,使用贪心+二分. 贪心的是每次尽量将元素往右边划分,二分查找最小的x满足m个连续的子序列和S(i)都不超过x. 由于输出的原 ...

  9. ORACLE安装心得,大家一起分享,假设不正确的地方,大家请指出来

    1. 安装\Oracle\10201_database_win32.zip: a) 安装图解: http://jingyan.baidu.com/article/5d6edee228308899ead ...

  10. VB6基本数据库应用(五):数据的查找与筛选

    同系列的第五篇,上一篇在:http://blog.csdn.net/jiluoxingren/article/details/9633139 数据的查找与筛选 第4篇发布到现在已经过了4天,很抱歉,学 ...