zoukankan      html  css  js  c++  java
  • 2005自动生成数据库的清空脚本

    --自动生成数据库的清空脚本(SQL05環境)
    
    --use Test--指定數據庫
    --go
    if object_id('F_Clear','TF') is not null
        drop function F_Clear
    GO
    /****************************************************************************************************************************************************************
    %%函数名:F_Clear
    
    %%输入参数:
    
    %%输出参数:
    
    %%功能:
    ****************************************************************************************************************************************************************
    %%编写:Roy(中国风)  
    
    ****************************************************************************************************************************************************************/
    create Function F_Clear()
    returns @T table(ID INT IDENTITY,Clear_SQL nvarchar(200),TableName sysname)
    as
    begin 
    ;with CTERK(Lev,fkeyID,rkeyID)
    as
    (select 
        1, a.fkeyid,a.rkeyid
    from 
        sys.sysforeignkeys  a
    where
        not exists(select 1 from sys.sysforeignkeys  where rkeyid=a.fkeyid)
    union all
    select 
        b.Lev+1,a.fkeyid,a.rkeyid
    from 
        sys.sysforeignkeys  a
    join
        CTERK b on b.rkeyID=a.fkeyid)
    ,CTERK2
    as
    (select 
        Lev,ObjectID,row=row_number()over(partition by ObjectID order by Lev DESC)
    from 
        (select MAX(Lev) AS Lev,FkeyID as ObjectID from CTERK GROUP BY FkeyID union all select MAX(Lev)+1,rkeyID as ObjectID from CTERK GROUP BY rkeyID) AS a
    )
    insert @T
    select 
        [Clear_SQL]=case when Lev=1 or b.ObjectID is null then 'Truncate table '+quotename(a.Name) when c.Object_id is not null then 'Delete '+quotename(a.Name)
        +char(13)+char(10)+'if @@rowcount>0 or IDENT_Current('''+a.Name+''')>1'+char(13)+char(10)+'dbcc checkident ('+quotename(a.Name,'''')+',Reseed,0)' else 'Delete '+quotename(a.Name) end,[TableName]=a.Name
    from 
        sysobjects a
    left join
        CTERK2 b on a.ID=b.ObjectID and b.row=1
    left join
        sys.identity_columns c on a.ID=c.object_id
    where
        Xtype='U'
    order by case when b.ObjectID is null then 0 else 1 end,b.lev asc
    
    
    return 
    end
    go
    
    SELECT  a.[Clear_SQL]
    FROM    F_Clear() AS a
            INNER JOIN sys.tables AS b ON b.name = a.tablename
        ORDER BY a.ID
    go
    drop function F_Clear
  • 相关阅读:
    如何从零开始创建一个IT信息系统
    Linux常用命令
    vue.js 3.2.20: 用rem实现移动端和pc的兼容
    vue.js3.2.6:路由处理404报错(vue-router@4.0.11)
    vue.js项目在nginx上部署:使spring后端记录真实ip地址
    vue.js 3.0.5:用vue-i18n开发i18n国际化功能(vue-i18n@9.2.0)
    前台项目基础框架之spring boot后端(spring boot v2.5.4)
    前台项目基础框架之vue前端(vue@3.2.6)
    intellij idea 2021.2:为一个spring boot项目改名
    git:修改项目的remote地址(git version 2.30.2)
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463103.html
Copyright © 2011-2022 走看看