码迷,mamicode.com
首页 > 数据库 > 详细

sql server drop talbe 自动删除关联的外键 ,权限体系

时间:2015-05-18 18:28:01      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

 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 自动删除关联的外键 ,权限体系

标签:

原文地址:http://www.cnblogs.com/bingguang/p/4512347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!