首页 >

动态给表添加删除字段并同时修改它的插入更新存储过程

数据库|mysql教程动态给表添加删除字段并同时修改它的插入更新存储过程
删除字段
数据库-mysql教程
手机团购系统源码,vscode 显示空格,硬盘上安装ubuntu太卡,tomcat安全连接,sqlite 遍历表名,jquery loadding插件,前端框架师年薪百万,实用python爬虫代码,php环境 win7,西宁seo网络优化,供需信息网站源码,网页中插入本地图片,crm客户后台管理系统模板,两列布局html5商品展现页面,html5社区物业管理系统的意义,小程序源码 克隆lzw
有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段
星座源码下载,vscode新建java文件,ubuntu心得立,tomcat8虚拟,爬虫有斑点,vim php 插件安装,seo文章关键词密度,web代码下载网站,html5视频模板lzw
游戏源码 66,vscode修改照片,虚拟机上的ubuntu怎么分区,tomcat生成pem,安卓 sqlite 编辑,wordpress https插件,前端框架自己可以修改吗,可恶的爬虫游戏攻略,php乱码utf 8,虫虫seo助手,韩国风格网站php源码,网页版通达oa,手机竞价单页模板lzw
有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段。这个功能也许没有问题,但是它原有插入与更新的两个存储过程,也需要一起修改。因此Insus.NET实现了它,因此此文会让你了解到怎样动态为一个表添加删除字段以及动态修改它的存储过程

首先需要建一个表[A],这个表只有两个字段,一个是[ID]自动增长,另一个是表[B]的字段名,存储的每一笔记录,即是用户需要操作的表[B]的字段。这个表[A]需要建添加,更新,以及删除的存储过程,方便用户在后台方便操作,还有重点部分,需要写触发器。如有记录对表[A]进行添加,更新或是删除时,它会触发去作表[B]相应操作,还要去修改表[B]的存储过程。

动态修改表[B]的存储过程:
代码如下:
CREATE PROCEDURE [dbo].[usp_B_DymanicallyAlterStoreProcedure]
AS
DECLARE @VariableList NVARCHAR(MAX) = ”
DECLARE @FieldList NVARCHAR(MAX) = ”
DECLARE @ValueList NVARCHAR(MAX) = ”
DECLARE @FieldValueList NVARCHAR(MAX) = ”

DECLARE @I INT = 1, @R INT = 0
SET @R = (SELECT MAX([Id]) FROM [dbo].[A])
WHILE (@I <= @R)
BEGIN
DECLARE @fName NVARCHAR(100)
IF EXISTS(SELECT [Id] FROM [dbo].[A] WHERE [Id] = @I)
BEGIN
SELECT @fName = [FieldName] FROM [dbo].[A] WHERE [Id] = @I
SET @VariableList = @VariableList + ‘,@’ + @fName +’ DECIMAL(18,4)’ –动态的字段数据类型都一样
SET @FieldList = @FieldList + ‘,[‘ + @fName + ‘]’
SET @ValueList = @ValueList + ‘,@’ + @fName
SET @FieldValueList = @FieldValueList + ‘,[‘ + @fName + ‘] = @’ + @fName
END
SET @I = @I + 1
END

DECLARE @sql_I NVARCHAR(MAX),@sql_U NVARCHAR(MAX)
SET @sql_I = ‘
ALTER PROCEDURE [dbo].[usp_B_Insert]
(
@ItemCode NVARCHAR(50)
‘+ @VariableList +’
)
AS
INSERT INTO [dbo].[B] ([ItemCode]’+ @FieldList +’) VALUES (@ItemCode’+ @ValueList +’)

EXECUTE sp_EXECUTESQL @sql_I;

SET @sql_U = ‘
ALTER PROCEDURE [dbo].[usp_B_Update]
(
@Id INT,
@ItemCode NVARCHAR(50)
‘+ @VariableList +’
)
AS
UPDATE [dbo].[B] SET [ItemCode] = @ItemCode’+ @FieldValueList +’ WHERE [Id] = @Id

EXECUTE sp_EXECUTESQL @sql_U;

表[A]的插入触发器:
代码如下:
CREATE TRIGGER [dbo].[tri_A_Insert] ON [dbo].[A]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @FieldName NVARCHAR(50)
SELECT @FieldName = [FieldName] FROM INSERTED

EXECUTE(‘IF NOT EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID(”B”) AND [name] = ”’+ @FieldName +”’)
ALTER TABLE [B] ADD [‘+ @FieldName +’] DECIMAL(18,4) NULL’)

EXECUTE [dbo].[usp_B_DymanicallyAlterStoreProcedure];
END

表[A]删除触发器:
代码如下:
CREATE TRIGGER [dbo].[tri_A_Delete] ON [dbo].[A]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE @FieldName NVARCHAR(50)
SELECT @FieldName = [FieldName] FROM DELETED

EXECUTE(‘IF EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID(”B”) AND [name] = ”’+ @FieldName +”’)
ALTER TABLE [B] DROP COLUMN [‘+ @FieldName +’]’)

EXECUTE [dbo].[usp_B_DymanicallyAlterStoreProcedure];
END


动态给表添加删除字段并同时修改它的插入更新存储过程
  • mysql已经有表加字段 |php和mysql安装
  • mysql已经有表加字段 |php和mysql安装 | mysql已经有表加字段 |php和mysql安装 ...

    动态给表添加删除字段并同时修改它的插入更新存储过程
  • 删除表中字段的sql语句有哪些?
  • 删除表中字段的sql语句有哪些? | 删除表中字段的sql语句有哪些? ...

    动态给表添加删除字段并同时修改它的插入更新存储过程
  • 删除字段的sql语句是什么
  • 删除字段的sql语句是什么 | 删除字段的sql语句是什么 ...