如何為動(dòng)態(tài)為SQL Server表添加字段呢?對(duì)SQL新手來(lái)說(shuō),這可能是一個(gè)難題,不過(guò)沒(méi)關(guān)系,下面就將為您介紹該方法,希望對(duì)您有所幫助。
本例演示在SQL Server表中,當(dāng)用戶添加一條字段信息數(shù)據(jù)到一個(gè)SQL Server表中,通過(guò)觸發(fā)器相應(yīng)在另一個(gè)表中自動(dòng)增加一個(gè)對(duì)應(yīng)的字段。
1 首先建立一個(gè)字段信息表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 建立一個(gè)動(dòng)態(tài)字段表Customeres, 當(dāng)Fields每增加一條記錄,本表就相應(yīng)增加一個(gè)字段。
- 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新增一個(gè)觸發(fā)器,當(dāng)增加數(shù)據(jù)的時(shí)候,都會(huì)自動(dòng)調(diào)用此觸發(fā)器。注意:字段的長(zhǎng)度硬編碼,只是為了演示目的,應(yīng)根據(jù)自己的需要來(lái)動(dòng)態(tài)調(diào)整長(zhǎng)度。
- 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 演示,在查詢分析中執(zhí)行
Insert into Fields ([name], DataType) values ('name', 'varchar')
該文章在 2011/5/4 23:10:27 編輯過(guò)