批量删除 添加 表主键 sql-- 存储过程

Posted 余LI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量删除 添加 表主键 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‘

 

以上是关于批量删除 添加 表主键 sql-- 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用SQL语句批量删除多个表的相同字段

用啥方法能快速向mysql表里批量添加数据?

批量删除Sql Server对象(表,存储过程,触发器)

mysql存储过程怎样批量插入数据

用于更改表添加复合主键的批量 SQL 语句

mysql 怎么批量删除没有数据的数据?怎么重新随即排列主键?