sql server drop talbe 自动删除关联的外键 ,权限体系(一)
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 自动删除关联的外键 ,权限体系(一)的更多相关文章
- sql server drop talbe 自动删除关联的外键 ,权限体系(二)
alter table dbo.Sys_PowerTeamForUser add constraint FK_Sys_User_Sys_PowerTeamForUser foreign key (Sy ...
- sql server小技巧-自动添加时间与主键自增长
在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server ...
- [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示: 类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...
- 【SQL Server DBA】维护语句:删除并创建外键约束、获取建表语句
原文:[SQL Server DBA]维护语句:删除并创建外键约束.获取建表语句 1.删除外键约束,建立外键约束 先建立3个表: /* drop table tb drop table tb_b dr ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- SQL Server 索引的自动维护 <第十三篇>
在有大量事务的数据库中,表和索引随着时间的推移而碎片化.因此,为了增进性能,应该定期检查表和索引的碎片,并对具有大量碎片的进行整理. 1.确定当前数据库中所有需要分析碎片的表. 2.确定所有表和索引的 ...
- SQL Server数据库设置自动备份策略
一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,能够完成大部分的数据库的维护任务. 数据库的备份也是日常工作中非常重要的一个环节.备份的方法非常的多. 今天给大家介绍最简单 ...
- MS SQL Server 定时任务实现自动备份
SQL Server Express 版本是没有SQL 代理服务的,从而导致不能使用SQL Server的定时自动备份功能.真心感觉这就是一个坑,虽然Express是学习的版本,但是精简的也太多了.另 ...
- 【SQL Server性能优化】删除大量数据的方法比较
原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...
随机推荐
- nuget 命令详解
包相关 Install-Package 安装包 -Version 4.3.1 参数指定版本Uninstall-Package 卸载包Update-Package 更新包Get-Package 默认 ...
- 从XML文件乱码问题,探寻其背后的原理(转)
由于网友反应本文图片不能显示,由于时间关系未能及时修正.请访问原文地址: 本文出自http://blog.csdn.net/dinglang_2009/article/details/6895355, ...
- 自己主动机串标:Directed Acyclic Word Graph
trie -- suffix tree -- suffix automa 有这么几个情况: 用户输入即时响应AJAX搜索框, 显示候选名单. 搜索引擎keyword统计数量. 后缀树(Suffix T ...
- 【高德地图API】从头德国高中生JS API(三)覆盖物——大喊|折线|多边形|信息表|聚合marker|点蚀图|照片覆盖
覆盖物,是一张地图的灵魂.有覆盖物的地图.才是完整的地图.在一张地图上,除了底层的底图(瓦片图,矢量图),控件(有功能可操作的工具).最重要最必不可少的就是覆盖物了.覆盖物有多种.包含.标注.折线.多 ...
- Android虚拟机器学习总结Dalvik虚拟机创建进程和线程分析
Dalvik调用一个成员函数时,虚拟机,假设发现,该成员函数是一个JNI办法,然后,它会直接跳转到其地址来运行.也就是说.JNI方法是直接在本地操作系统上运行的.而不是由Dalvik虚拟机解释器运行. ...
- 如何获得 oracle RAC 11g asm spfile S档
方法一: [root@vmrac1 ~]# su - grid [grid@vmrac1 ~]$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.3.0 ...
- HDU1160(LIS)
主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意:求体重下降.速度添加的样例最多有多少个 依据体重降序排一下,然后求速度的最长上升子序列 , ...
- Suse发生了错误Access denied for user ''@'localhost' to&
好久没实用MySQL了,上次由于装了Banq的论坛系统.在用MySQL Administrator进去的时候居然提示mysql error number 1045 access denied for ...
- HDU 4022 Bombing STL 模拟题
人工模拟.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector ...
- 单机部署redis主从备份
redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个red ...