TSCreateVirtualTab 过程基于包含 TimeSeries 列的表创建虚拟表。
TSCreateVirtualTab(VirtualTableName lvarchar, BaseTableName lvarchar, NewTimeSeries lvarchar, TSVTMode integer default 0, TSColName lvarchar default NULL);
使用 TSCreateVirtualTab 过程基于包含时间系列的表创建虚拟表。因为 TimeSeries 行类型中的列名用作生成的虚拟表中的列名,所以必须确保这些列名与基本表中的其他列名不发生冲突。虚拟表中行的总长度(非时间系列与 TimeSeries 列的和)不得超过 32 KB。
可以配置时间系列虚拟表以允许通过虚拟表更新基本表中的数据。如果指定任何可选参数,必须按照在语法中显示的顺序来指定,但您可以使用其中任何一个,而不使用其他参数。例如,可以指定 TSColName 参数而不包括 NewTimeSeries 和 TSVTMode 参数。
NewTimeSeries 参数指定虚拟表是否允许将元素插入基本表中不存在的时间系列,该时间系列不存在的原因是行不存在或者行还不具有时间系列元素。如果要在时间系列不存在时允许插入,请使用 NewTimeSeries 参数指定时间系列输入字符串。如果要在时间系列不存在时禁止插入,请在创建虚拟表时省略 NewTimeSeries 参数。
下表描述为实现不同目标尝试更新基本表的结果。
目标 | 结果 | 是否需要使用 NewTimeSeries 参数? |
---|---|---|
将时间系列元素添加到没有任何时间系列数据的现有行。例如,为特定计量表添加第一个计量表读数。 | 新的时间系列将插入现有行。 | 是 |
将其他时间系列元素添加到现有时间系列。例如,为具有先前读数的计量表添加新的计量表读数。 | 如果时间点不同于现有元素,那么新元素将插入时间系列。如果时间点与现有元素相同,那么将使用新值更新现有元素。
如果 TSVTMode 参数包括值 1,那么相同时间点的多个元素可以共存,因此将插入新元素并且保留现有元素。 |
否 |
添加一个新行。例如,为新的计量表标识添加行。 | 新行将插入基本表。 | 是 |
如果不包括 NewTimeSeries 参数,并尝试将时间系列元素插入不具有任何时间系列元素的现有行或插入新行,那么将接收到错误。
execute procedure TSCreateVirtualTab('daily_stocks_virt', 'daily_stocks', 'calendar(daycal), origin(2011-01-03 00:00:00.00000)' );