按照规则重命名所有外键名称_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

按照规则重命名所有外键名称

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:名称所有命名规则
黑客防线网安网讯:  以前用PD设计数据库时,或者直接在企业管理器设计表结构时,总想将外键手工按规则命名,而不是使用系统自动产生的随机名称。但是手工命名一段时间后,就觉得太累,啰嗦,很烦,慢慢的就...

  以前用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
    ) 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10531-1.html
网站维护教程更新时间:2012-03-21 03:05:43  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer