動態設定表結構方案(一)

2021-06-21 05:33:26 字數 1281 閱讀 5396

如果想提供平台功能,以適應不同業務,引入動態設定表結構功能,怎麼辦呢?

有乙個方案是這樣的:

1、按照使用者的配置,建立相應的物理表

2、系統上線使用以後,有可能還會調整表結構(雖然機率不算太大,但畢竟是有這種可能)

3、這時,應該相應修改物理表結構

4、怎麼調整呢?

1)按照新結構,建立一張新錶

2)在當前表建立觸發器,將當前表所有的增刪改都同步到新錶

3)複製資料到新錶

4)通過換名,將新錶置換當前表

假設當前表為[bigtable],新錶為[bigtable.tmp]

觸發器:

alter trigger [dbo].[trgins]

on [dbo].[bigtable]

after insert

as 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

網路限制,一片文章只能發這麼多。。。,餘下部分見動態設定表結構方案(二)

動態設定CSS樣式表

page language c import namespace system.data script language c runat server public void page load object obj,eventargs e script html head title c titl...

js動態設定根元素的rem方案

方案需求 rem單位在做移動端的h5開發的時候是最經常使用的單位。為解決自適應的問題,我們需要動態的給文件的根節點新增font size值。使用mediaquery可以解決這個問題,但是每乙個檔案都引用一大串的font size值很繁瑣,而且值也不能達到連續的效果。就使用js動態計算給文件的fopn...

動態資料結構 動態建立鍊錶

include include struct weapon struct weapon create 需要乙個建立鍊錶的函式,函式的返回值型別是struct weapon 型別 p2 next null return head int main 總結 p1用來儲存當前的節點,建立完後掛在前面節點後面...