如果想提供平台功能,以適應不同業務,引入動態設定表結構功能,怎麼辦呢?
有乙個方案是這樣的:
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用來儲存當前的節點,建立完後掛在前面節點後面...