zoukankan      html  css  js  c++  java
  • 批量删除 添加 表主键 sql-- 存储过程

    sql 批量操作添加/ 删除 表主键

    直接上代码把:  是存储过程哦 , 


    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER proc [dbo].[prc_name] (
    @nameinfo nvarchar(50) output
    )
    AS
    declare @Key NVARCHAR(MAX) --创建参数 返回创建主键
    declare @tab NVARCHAR(MAX) --创建参数 返回 表
    declare @tabs NVARCHAR(MAX) --创建参数 返回 表
    IF
    EXISTS(SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME=@nameinfo)
    BEGIN
    set @Key=(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME=@nameinfo)
    SET @tab=(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME=@nameinfo)
    PRINT('表'+@tab+'存在主键名为:'+@Key)
    END
    ELSE
    BEGIN
    SET @tabs=(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME=@nameinfo)
    declare @b NVARCHAR(MAX) --创建参数 返回 表
    declare @name NVARCHAR(MAX)
    SET @name='BPMID'
    set @b='ALTER TABLE '+@nameinfo+' ADD '+@name+' INT IDENTITY(1,1) PRIMARY KEY';
    exec SP_EXECUTESQL @b
    PRINT('添加主键成功')
    END
    --------------添加 主键
    exec prc_name'a'
    exec prc_name'b'

    ------- 批量删除 主键 存储过程

    ------删除主键

    ALTER TABLE a DROP COLUMN BPMID; -- -- 删除表字段


    alter table a drop constraint PK_b -- 删除主键约束

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME='b' --获取主键

    go
    if exists(select*from sysobjects where name='proc_k')
    drop procedure proc_k
    go
    create proc proc_k (
    @name nvarchar(50)
    )
    AS
    declare @SNAME NVARCHAR(MAX)
    set @SNAME=(
    SELECT B.NAME AS 主键名`
    FROM SYSOBJECTS A
    JOIN SYSOBJECTS B
    ON A.ID=B.PARENT_OBJ
    AND A.XTYPE='U' AND B.XTYPE='PK'
    and A.NAME in (@name)
    )
    declare @key NVARCHAR(MAX) --获取主键
    set @key=(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME=@name)--获取 主键名
    declare @a NVARCHAR(MAX) --先删除 主键约束
    set @a='alter table '+@name+' drop constraint '+@SNAME+''
    exec SP_EXECUTESQL @a --执行
    --再删除表
    declare @b NVARCHAR(MAX)
    SET @b= 'ALTER TABLE '+@name+' DROP COLUMN '+@key+'' -- -- 删除主键字段
    exec SP_EXECUTESQL @b
    PRINT('删除主键成功')

    ---------- 删除主键----------
    go
    exec proc_k'a'
    exec proc_k'b'

  • 相关阅读:
    放弃antd table,基于React手写一个虚拟滚动的表格
    思考:声明式编程与命令式编程
    前端入门指南(菜鸟篇-下)
    前端入门指南(菜鸟篇-上)
    centos7 磁盘管理—— lvm的使用
    Linux 用 sftp scp命令 互传文件
    linux 通过md5查找重复文件
    Linux sort uniq 命令。简单运用
    Linux sed 命令
    shell 脚本,将/etc/目录下所有的软链接文件输出
  • 原文地址:https://www.cnblogs.com/zonzi/p/12583167.html
Copyright © 2011-2022 走看看