sql动态添加字段实例解析

发布时间:2020-03-26编辑:脚本学堂
为大家介绍下,在sql server中动态添加表字段的方法,有时需要为表动态添加字段,有需要的朋友参考下。

实现功能:
在SQL Server表中,当用户添加一条字段信息数据到一个SQL Server表中,通过触发器相应在另一个表中自动增加一个对应的字段。

1,首先,建立一个字段信息表Fields
 

复制代码 代码示例:
CREATE TABLE [dbo].[Fields] ( 
 [FieldID] [int] IDENTITY (1, 1) NOT NULL , 
 [Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 
 [DataType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL  
) ON [PRIMARY] 
GO 
 
ALTER TABLE [dbo].[Fields] ADD  
 CONSTRAINT [PK_Fields] PRIMARY KEY  CLUSTERED  
 ( 
  [FieldID] 
 )  ON [PRIMARY]  
GO

2,建立一个动态字段表Customeres, 当Fields每增加一条记录,本表就相应增加一个字段。
 

复制代码 代码示例:
CREATE TABLE [dbo].[Customeres] ( 
 [ID] [int] IDENTITY (1, 1) NOT NULL  
) ON [PRIMARY] 
GO 
 
ALTER TABLE [dbo].[Customeres] ADD  
 CONSTRAINT [PK_Customeres] PRIMARY KEY  CLUSTERED  
 ( 
  [ID] 
 )  ON [PRIMARY]  
GO 

3,为SQL Server表Fields新增一个触发器,当增加数据时,都会自动调用此触发器。
注意:字段的长度硬编码,只是为了演示目的,应根据自己的需要来动态调整长度。
 

复制代码 代码示例:
CREATE TRIGGER trigger_addField ON Fields 
FOR INSERT 
AS 
 
DECLARE @FieldID int, 
 @Name varchar(50), 
 @DataType varchar(50), 
 @SQL varchar(1000) 
 
SELECT @FieldIDFieldID = FieldID, @Name = [Name], @DataTypeDataType = DataType 
FROM Inserted 
if not exists (SELECT * FROM syscolumns  
 where id=object_id('Customeres') 
 AND name=@Name) 
BEGIN 
 SET @SQL = 'ALTER table Customeres add ' + @Name + ' '  
  + @DataType + '(64) NULL' 
 EXEC (@SQL) 
END 
PRINT @Name + ',' + @DataType 

4,在查询分析中执行
 

复制代码 代码示例:
Insert into Fields ([name], DataType) values ('name', 'varchar')