zoukankan      html  css  js  c++  java
  • 删除所有约束、表、视图等SQL脚本

    我相信经常有同学想删除某一个表时,遇到这样或那样的约束无法删除一头雾水,这时您请不要着急,先看看以下提供的删除所有约束、表、视图等SQL脚本,或在测试环境试用。
    但是您也可以仅删除某一个对象(表)的所有约束或全部约束,您只需要把游标里用到的SELECT查询语句单独拿出来执行一下,自己看看就明白了,删除了表的所有约束、视图之后就可以删除表了。

    --删除所有约束、表、视图等SQL脚本

    --###############################################
    --删除所有外键约束
    --###############################################
    DECLARE @SQL VARCHAR(99)
    DECLARE CUR_CONSTRAINT CURSOR LOCAL FOR
     SELECT
      'ALTER TABLE '+
      CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
      +OBJECT_NAME(parent_object_id)+' DROP CONSTRAINT '+OBJECT_NAME(object_id)
     FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
     WHERE O.type IN('C','D','F')
    OPEN CUR_CONSTRAINT
    FETCH CUR_CONSTRAINT INTO @SQL
    WHILE @@FETCH_STATUS =0
     BEGIN
      EXEC(@SQL)
      FETCH CUR_CONSTRAINT INTO @SQL
     END
    CLOSE CUR_CONSTRAINT
    DEALLOCATE CUR_CONSTRAINT

    --###############################################
    --删除所有视图(存储过程、函数等用同样的方法)
    --###############################################
    --DECLARE @SQL VARCHAR(99)
    DECLARE CUR_VIEW CURSOR LOCAL FOR
     SELECT
      'IF OBJECT_ID('''+
      CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
      +OBJECT_NAME(object_id)
      +''') IS NOT NULL'+
      +' DROP VIEW '+
      CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
      +OBJECT_NAME(object_id)
     FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
     WHERE O.type IN('V')
    OPEN CUR_VIEW
    FETCH CUR_VIEW INTO @SQL
    WHILE @@FETCH_STATUS =0
     BEGIN
      EXEC(@SQL)
      FETCH CUR_VIEW INTO @SQL
     END
    CLOSE CUR_VIEW
    DEALLOCATE CUR_VIEW

    --###############################################
    -- 删除所有表
    --###############################################
    --DECLARE @SQL VARCHAR(99)
    DECLARE CUR_TABLE CURSOR LOCAL FOR
    SELECT
     'DROP TABLE '+
      CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
      +O.name
    FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
    WHERE O.type='U'
    OPEN CUR_TABLE
    FETCH CUR_TABLE INTO @SQL
    WHILE @@FETCH_STATUS =0
     BEGIN
      EXEC(@SQL)
      FETCH CUR_TABLE INTO @SQL
     END
    CLOSE CUR_TABLE
    DEALLOCATE CUR_TABLE

    --###############################################

    再提供一下SQL Server里的OBJECT_ID函数object_type参数类型

    --###############################################

    OBJECT_ID(object_name,object_type)
    对象类型:
    AF =聚合函数(CLR)
    C = CHECK约束
    D = DEFAULT(约束或独立)
    F = FOREIGN KEY约束
    FN = SQL标量函数
    FS =大会(CLR)的标量函数
    FT =程序集(CLR)表值函数
    IF = SQL内联表值函数
    IT =内部表
    P = SQL存储过程
    电脑大会(CLR)存储过程
    PG =计划指南
    PK = PRIMARY KEY约束
    R =规则(旧式,单机)
    RF =复制过滤过程
    S =系统基表
    SN =同义词
    SQ =服务队列
    TA =组件(CLR)DML触发器
    TF = SQL表值函数
    TR = SQL DML触发器
    TT =表类型
    U =表(用户定义)
    UQ = UNIQUE约束
    V =视图
    X =扩展存储过程

  • 相关阅读:
    [译]ASP.NET Core 2.0 依赖注入
    FineUIPro v4.0.0 发布了,全新 CSS3 动画惊艳登场!
    [译]ASP.NET Core 2.0 带初始参数的中间件
    [译]ASP.NET Core 2.0 中间件
    【原创】三招搞死你的IE11,可重现代码下载(IE Crash keyframes iframe)!
    立足中国,走向世界(Made in China, Go to World)
    【JS小技巧】JavaScript 函数用作对象的隐藏问题(F.ui.name)
    FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
    公安系统信息化业务概要系统设计
    2018年软件开发状态报告
  • 原文地址:https://www.cnblogs.com/PongorXi/p/2556119.html
Copyright © 2011-2022 走看看