📜  在 sql 中创建时态表(1)

📅  最后修改于: 2023-12-03 15:37:31.829000             🧑  作者: Mango

在 SQL 中创建时态表

时态表是指在数据库中记录某个实体在某个时间点或一段时间内的状态,可用于历史数据记录或数据的时间分析。在 SQL 中创建时态表需要使用特定的语法和技巧,本文将介绍如何进行操作。

创建时态表的基本语法

时态表的创建与普通表的创建有些不同,需要使用到 系统版本表行间版本(ROW)模式跨行版本(SYSTEM)模式。以下是基本的创建语法:

CREATE TABLE table_name  
(   
    column_name data_type [GENERATED ALWAYS AS ROW 
                START PERIOD TIMESTAMP(6) GENERATED ALWAYS AS ST...
      END PERIOD TIMESTAMP(6) GENERATED ALWAYS AS ST... 
                ON NULL | NOT NULL]
)   
WITH SYSTEM VERSIONING  
(   
    HISTORY_TABLE = history_table_name  
    [,. . .]  
);
参数说明
  • table_name:创建时态表的名称。
  • column_name data_type:要存储的列和数据类型。
  • START PERIODEND PERIOD:指定一个时间段,在这个时间段内的数据将被存储在历史表中。时间段可以是年、月、日、小时、分钟或秒。用 GENERATED ALWAYS AS ROW 关键字指定时间戳。
  • WITH SYSTEM VERSIONING:指定创建时态表。
  • HISTORY_TABLE:保存历史数据的表名。
示例代码

以下是一个简单的示例代码,创建了一个名为 product 的时态表,保留了该表中每个产品的价格历史信息:

CREATE TABLE product  
(   
    product_id INT NOT NULL,   
    product_name VARCHAR(255) NOT NULL,   
    price DECIMAL(10,2) NOT NULL  
      GENERATED ALWAYS AS ROW 
          START PERIOD TIMESTAMP(6) GENERATED ALWAYS AS ST...
          END PERIOD TIMESTAMP(6) GENERATED ALWAYS AS ST... 
          ON NULL   
)   
WITH SYSTEM VERSIONING  
(   
    HISTORY_TABLE = product_history  
)

该创建语句中,product_idproduct_nameprice 是我们要存储的列,其中 price 属性包含了必要的时间戳信息。

结束语

本文介绍了如何在 SQL 中创建时态表,并演示了如何编写基本语法。时态表是一种高效管理和查询历史数据的方法,可以在许多情况下提高数据库的性能和可用性。在实际应用中,请务必根据具体情况进行使用,以确保数据的完整性和正确性。