Sql动态添加字段的正确姿势

时间:2024-01-05 20:15:44

如何给指定表动态添加字段?

一、创建一张表【Tbl_AutoFileds】

(tableName表名,fieldName字段名,dataType数据类型,length长度  isnull 是否允许为null)

Sql动态添加字段的正确姿势

二、为【Tbl_AutoFileds】创建表触发器

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO
-- =============================================
-- Author:<作者>
-- Create date: <20160320 Date,,>
-- Description:<当表插入数据时向相应的表增加列>
-- =============================================
ALTER TRIGGER [dbo].[Filed_Auto]
ON [dbo].[Tbl_AutoFileds] for insert
AS
DECLARE@tb_Name varchar(50),
@coloun varchar(50),
@datatype varchar(50),
@length varchar(1000),
@isnull varchar(10),
@sql varchar(200)BEGINSET NOCOUNT ON;
select @tb_Name=tabld_name,@coloun=fieldName,@datatype=datatype,@length=[length],@isnull=[isnull] from inserted
if not exists (select * from syscolumns where id=object_id(@tb_Name) and name=@coloun)
begin
set @sql='ALTER table '+@tb_Name+' add '+@coloun+' '+@datatype+'('+@length+') '+@isnull
exec (@sql)
end

三、向表添加内容,同时向对应表增加列

插入内容到Tbl_AutoFields表会促发触发器,从而向指定表中动态添加了字段:

Insert into Tbl_AutoFields values('Tbl_Test','MyField','nvarchar','','null');

我们向Tbl_Test表中添加了数据类型为nvarchar(200)的字段MyField.

推荐技术类微信公众号:CodeL