动态设置表结构方案(一)

网友投稿 690 2022-12-02

动态设置表结构方案(一)

动态设置表结构方案(一)

如果想提供平台功能,以适应不同业务,引入动态设置表结构功能,怎么办呢?

有一个方案是这样的:

1、按照用户的配置,建立相应的物理表

2、系统上线使用以后,有可能还会调整表结构(虽然几率不算太大,但毕竟是有这种可能)

3、这时,应该相应修改物理表结构

4、怎么调整呢?

1)按照新结构,建立一张新表

2)在当前表建立触发器,将当前表所有的增删改都同步到新表

3)复制数据到新表

4)通过换名,将新表置换当前表

假设当前表为 [bigtable],新表为[bigtable.tmp]

触发器:

ALTER TRIGGER [dbo].[trgIns] ON [dbo].[bigtable] AFTER INSERTAS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here -- 将新增纪录拷贝到临时表 SELECT * INTO #inserted FROM INSERTED; -- 获得当前表的字段 DECLARE @cols VARCHAR(MAX) = ''; SELECT @cols = @cols + ',' + C.name FROM sys.columns C WHERE C.[object_id] = OBJECT_ID('[bigtable]'); SET @cols = SUBSTRING(@cols,2,LEN(@cols) - 1); -- 显式插入标识列 SET IDENTITY_INSERT [bigtable.tmp] ON; -- 将增加记录从临时表拷贝至新表 DECLARE @sql VARCHAR(MAX) = ''; SET @sql = 'INSERT INTO [bigtable.tmp](' + @cols + ') SELECT ' + @cols + ' FROM #inserted'; EXEC(@sql); SET IDENTITY_INSERT [bigtable.tmp] OFF;END

网络限制,一片文章只能发这么多。。。,余下部分见​​动态设置表结构方案(二)​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊聊DecimalFormat的用法及各符号的意义
下一篇:WPF学习笔记——在“System.Windows.StaticResourceExtension”上提供值时引发了异常
相关文章

 发表评论

暂时没有评论,来抢沙发吧~