
# 校验账本数据一致性
#### 前提条件
数据库正常运行，并且对防篡改数据库执行了一系列增、删、改等操作，保证在查询时段内有账本操作记录结果产生。
#### 背景信息
- 账本数据库校验功能目前提供两种校验接口，分别为：ledger_hist_check(text, text)和ledger_gchain_check(text, text)。普通用户调用校验接口，仅能校验自己有权限访问的表。
- 校验防篡改用户表和用户历史表的接口为pg_catalog.ledger_hist_check，操作为：
  ```
  SELECT pg_catalog.ledger_hist_check(schema_name text,table_name text);
  ```
  如果校验通过，接口返回t，反之则提示失败原因并返回f。
  
- 校验防篡改用户表、用户历史表和全局区块表三者是否一致的接口为pg_catalog.ledger_gchain_check，操作为：
  ```
  SELECT pg_catalog.ledger_gchain_check(schema_name text, table_name text);
  ```
  如果校验通过，接口返回t，反之则提示失败原因并返回f。
  
 
#### 操作步骤
1. 校验防篡改用户表ledgernsp.usertable与其对应的历史表是否一致。 
   ```
   gaussdb=# SELECT pg_catalog.ledger_hist_check('ledgernsp', 'usertable');
   ```
   查询结果如下：
   ```
   ledger_hist_check
   -------------------
    t
   (1 row)
   ```
   该结果表明防篡改用户表和用户历史表中记录的结果能够一一对应，保持一致。
   
   
2. 查询防篡改用户表ledgernsp.usertable与其对应的历史表以及全局区块表中关于该表的记录是否一致。 
   ```
   gaussdb=# SELECT pg_catalog.ledger_gchain_check('ledgernsp', 'usertable');
   ```
   查询结果如下：
   ```
   ledger_gchain_check
   ---------------------
    t
   (1 row)
   ```
   查询结果显示，上述三表中关于ledgernsp.usertable的记录保持一致，未发生篡改行为。
   
   
 
