重命名Sql Server所有外键约束名的方法
2012-11-28 09:51
232 查看
use [database]
go
declare fkcur cursor for
select
OBJECT_NAME(col.constraint_object_id) as FKConstraintName
,fkTable.name as FKTable
,fkCol.name as FKColumn
,pkTable.name as PKTable
,pkCol.name as PKColumn
from sys.foreign_key_columns col
-- 外键约束是建立在外键表上的,
-- 因此foreign_key_columns表中的parent_object_id和parent_column_id分别表示外键表和外键列
inner join sys.objects fkTable
on fkTable.object_id = col.parent_object_id
inner join sys.columns fkCol
on fkCol.column_id = col.parent_column_id
and fkCol.object_id = fkTable.object_id
-- foreign_key_columns表中的referenced_object_id和referenced_column_id分别指向
-- 外键约束的主键表对象以及主键列
inner join sys.objects pkTable
on pkTable.object_id = col.referenced_object_id
inner join sys.columns pkCol
on pkCol.column_id = col.referenced_column_id
and pkCol.object_id = pkTable.object_id
order by OBJECT_NAME(col.constraint_object_id)
open fkcur
declare @constraintName nvarchar(128)
declare @fkTable nvarchar(64)
declare @fkColumn nvarchar(64)
declare @pkTable nvarchar(64)
declare @pkColumn nvarchar(64)
declare @newConstraintName nvarchar(128)
fetch next from fkcur
into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn
while @@FETCH_STATUS = 0
begin
set @newConstraintName = 'FK_'+@fkTable+'_'+@pkTable+'_On_'+@fkColumn
exec sp_rename @constraintName,@newConstraintName,'Object'
fetch next from fkcur
into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn
end
close fkcur
deallocate fkcur
go
declare fkcur cursor for
select
OBJECT_NAME(col.constraint_object_id) as FKConstraintName
,fkTable.name as FKTable
,fkCol.name as FKColumn
,pkTable.name as PKTable
,pkCol.name as PKColumn
from sys.foreign_key_columns col
-- 外键约束是建立在外键表上的,
-- 因此foreign_key_columns表中的parent_object_id和parent_column_id分别表示外键表和外键列
inner join sys.objects fkTable
on fkTable.object_id = col.parent_object_id
inner join sys.columns fkCol
on fkCol.column_id = col.parent_column_id
and fkCol.object_id = fkTable.object_id
-- foreign_key_columns表中的referenced_object_id和referenced_column_id分别指向
-- 外键约束的主键表对象以及主键列
inner join sys.objects pkTable
on pkTable.object_id = col.referenced_object_id
inner join sys.columns pkCol
on pkCol.column_id = col.referenced_column_id
and pkCol.object_id = pkTable.object_id
order by OBJECT_NAME(col.constraint_object_id)
open fkcur
declare @constraintName nvarchar(128)
declare @fkTable nvarchar(64)
declare @fkColumn nvarchar(64)
declare @pkTable nvarchar(64)
declare @pkColumn nvarchar(64)
declare @newConstraintName nvarchar(128)
fetch next from fkcur
into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn
while @@FETCH_STATUS = 0
begin
set @newConstraintName = 'FK_'+@fkTable+'_'+@pkTable+'_On_'+@fkColumn
exec sp_rename @constraintName,@newConstraintName,'Object'
fetch next from fkcur
into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn
end
close fkcur
deallocate fkcur
相关文章推荐
- Sql Server重命名所有外键约束
- MSSQL中删除所有外键约束的方法
- SQL Server 临时禁用和启用所有外键约束
- MSSQL中删除所有外键约束的方法
- SQL Server 临时禁用和启用所有外键约束
- SQL Server 临时禁用和启用所有外键约束
- 最简单删除SQL Server中所有数据的方法(不用考虑表之间的约束条件,即主表与子表的关系)
- SQL Server 临时禁用和启用所有外键约束
- SQL SERVER 2008 禁用或启用外键约束
- Mysql外键约束设置使用方法
- sql server删除外键约束
- SQL Server 查询所有外键子父表关系
- SQL批量删除用户表(先删除所有外键约束,再删除所有表)
- sql server增加及删除约束的方法
- mysql外键约束的两种方法
- sql server中的外键约束
- 不能启用此约束,因为不是所有的值都具有相应的父值的解决方法[网络转载]
- SQL Server 外键约束的例子
- sql server 2012 数据库所有表里查找某字符串的方法
- Mysql 截断表时由于外键约束无法完成时的处理方法