惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
N
News and Events Feed by Topic
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
博客园 - 叶小钗
B
Blog
Vercel News
Vercel News
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
F
Fortinet All Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
L
LangChain Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Check Point Blog
A
About on SuperTechFans
W
WeLiveSecurity
The GitHub Blog
The GitHub Blog

博客园 - 日月星尘

转:web开发注意事项 iframe动适应大小 - 日月星尘 - 博客园 C#中Datatable转Excel 为FreeTextBox添加中文字体 用代码的方式生成Form并提交表单 - 日月星尘 - 博客园 使用Asp.net MVC源代码调试你的应用程序 jquery插件,240个 30个流行的jQuery Plugins jQuery常用技巧 jquery表单验证插件 jquery.form.js 支持文件上传~ 超强1000个jquery极品插件! 生成静态页核心代码 asp.net提高网站性能的方法 25个基于浏览器的HTML在线编辑器集合 c#对象初始化顺序 通过/PAE打开Windows 2003/2000的大内存支持 JavaScript 对象设计 ASP.net初学者常用知识 ASP.NET应用程序设计的10大技巧
SQL Server动态为表添加字段的方法
日月星尘 · 2009-06-15 · via 博客园 - 日月星尘

SQL Server动态为表添加字段的方法

本例演示在SQL Server中,当用户添加一条字段信息数据到一个表中,通过触发器相应在另一个表中自动增加一个对应的字段。

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

CREATE TABLE [dbo].[Fields] (
 
[FieldID] [int] IDENTITY (11NOT 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 (11NOT NULL 
ON [PRIMARY]
GO

ALTER TABLE [dbo].[Customeres] ADD 
 
CONSTRAINT [PK_Customeres] PRIMARY KEY  CLUSTERED 
 (
  
[ID]
 )  
ON [PRIMARY] 
GO

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

CREATE TRIGGER trigger_addField ON Fields
FOR INSERT
AS

DECLARE @FieldID int,
 
@Name varchar(50),
 
@DataType varchar(50),
 
@SQL varchar(1000)

SELECT @FieldID = FieldID, @Name = [Name]@DataType = 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')

 参考来源:
Add a column to a table unless it already exists
Using Triggers In MS SQL Server