- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 |
以前用PD设计数据库时,或者直接在企业管理器设计表结构时,总想将外键手工按规则命名,而不是使用系统自动产生的随机名称。但是手工命名一段时间后,就觉得太累,啰嗦,很烦,慢慢的就不了了之了。不过,平心而论我们还是希望所有对象的命名是规范的,这样做不但看着舒服、显得好看专业,而且在着急调整某个外键时可以根据规则直接写出其名称,不需要先去查看到底其名称是什么。
今天痛下决心,写了个sql,按规则重命名所有外键信息。呵呵,挺好,能够懒点的话,还是懒点好!
CREATE PROC proc_Rename_Fkeys
AS
/*************************************************************************
创建时间:2010-01-21 10:31
创建人员:王召冠
功能说明:按照规则重命名所有外键名称。
命名规则:fk__FkTableName__FkColumnName__PkTableName__PkColumnName
注意事项:
业务注释:
--------------------------------------------------------------------------
修改时间:2010-01-21 13:42
修改人员:王召冠
修改说明:增加对多字段主外键关联情况的支持
**************************************************************************/
DECLARE @vTableName NVARCHAR(50), --用户表名称
@vPkTableName NVARCHAR(50), --主键表名称
@vPkColumnName NVARCHAR(50), --主键字段名称
@vFkTableName NVARCHAR(50), --外键表名称
@vFkColumnName NVARCHAR(50), --外键字段名称
@vFkName NVARCHAR(500), --原外键名称
@vFkNewName NVARCHAR(500) --按照规则产生的新外键名称
-- 循环所有用户表
DECLARE table_cursor CURSOR FOR
SELECT NAME
FROM sysobjects
WHERE TYPE = 'U'
OPEN table_cursor
FETCH NEXT FROM table_cursor INTO @vTableName
WHILE @@FETCH_STATUS = 0
BEGIN
-- 定义暂存关联表,用来存储当前表的所有关联外键信息(当前表为主键表)
CREATE table #fkeysout
(
OID INT IDENTITY,
PKTABLE_QUALIFIER sysname collate database_default NULL,
PKTABLE_OWNER sysname collate database_default NULL,
PKTABLE_NAME sysname collate database_default NOT NULL,
PKCOLUMN_NAME sysname collate database_default NOT NULL,
FKTABLE_QUALIFIER sysname collate database_default NULL,
FKTABLE_OWNER sysname collate database_default NULL,
FKTABLE_NAME sysname collate database_default NOT NULL,
FKCOLUMN_NAME sysname collate database_default NOT NULL,
KEY_SEQ smallint NOT NULL,
UPDATE_RULE smallint NULL,
DELETE_RULE smallint NULL,
FK_NAME sysname collate database_default NULL,
PK_NAME sysname collate database_default NULL,
DEFERRABILITY smallint NULL
)
-- 取得当前表的关联外键信息
INSERT INTO #fkeysout (
PKTABLE_QUALIFIER,
PKTABLE_OWNER,
PKTABLE_NAME,
PKCOLUMN_NAME,
FKTABLE_QUALIFIER,
FKTABLE_OWNER,
FKTABLE_NAME,
FKCOLUMN_NAME,
KEY_SEQ,
UPDATE_RULE,
DELETE_RULE,
FK_NAME,
PK_NAME,
DEFERRABILITY
)
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |