最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > 网站建设 > 动态给表添加删除字段并同时修改它的插入更新

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

时间:2023-05-22 10:05:22 阅读: 文章分类: 网站建设 作者: 网站技术员

导读:1建站知识有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段网站建设哪家好网站seo优化诊断工具。

网站建设哪家好网站seo优化诊断工具有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段。这个功能也许没有问题,但是它原有插入与更新的两个存储过程,也需要一起修改。因此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 NVARCHARseo网站优化(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(''seo网站关键词优化B'') AND [name] = '''+ @FieldName +''') ALTER TABLE [B] DROP COLUMN ['+ @Fiel建设网站公司dName +']') EXECUTE [dbo].[usp_B_DymanicallyAlterStoreProcedure]; END

关键词标签: 字段 它的

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-22 ,文章动态给表添加删除字段并同时修改它的插入更新主要讲述它的,字段,动态给表添加删除字段并同时修改它的网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_4385.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章