はじめに
プリザンターは柔軟な拡張性を持つオープンソースのWebデータベースであり、内部的には多くのテーブル構造を持っています。その中でも、本記事では記録テーブルのデータ追加に限定し、SQL Server上で直接データを書き込む方法について解説します。
本記事で説明しないこと
通常、プリザンターは各項目ごとに履歴管理機能を持ち、更新履歴を追跡できる設計となっています。この履歴はhistoryやdeletedテーブルに情報が格納されます。
今回はその履歴管理やバージョン制御の仕組みを利用せず、新規レコードを直接追加するシンプルなケースに絞って説明します。
記録テーブルの構造について
記録テーブルはItemsテーブルとResultsテーブルの2つで構成されています。
SiteIdはプリザンターのテーブルを作成したIDになります。
テーブル構造のイメージ
SiteIdの確認方法
SiteIdはプリザンターで記録テーブルを開いたitemsの次にある数値となります。
以下のURLの場合サイトIDは10199となります。
https://localhost/items/10199/index
テーブルの説明
Itemsテーブル
Itemsテーブルの登録方法ですが、値(サンプル)が必要な項目となります。
FullText列はフルテキストインデックスの文字列を格納している(と思われる)のでテーブル名から列の値の全てが格納されています。
| # | 列名 | 値(サンプル) |
|---|---|---|
| 1 | ReferenceId | 連番 |
| 2 | Ver | 1 |
| 3 | ReferenceType | Results |
| 4 | SiteId | サイトID |
| 5 | Title | タイトル無し |
| 6 | FullText | 記録テーブル ※1 |
| 7 | SearchIndexCreatedTime | タイムスタンプ |
| 8 | Comments | null |
| 9 | Creator | 1 |
| 10 | Updator | 1 |
| 11 | CreatedTime | タイムスタンプ |
| 12 | UpdatedTime | タイムスタンプ |
Resultsテーブル
Resultsテーブルは実際に記録テーブルに格納されたデータが格納されています。
ReferenceIdはResultIdとイコールにする必要があります。
| # | 列名 | 値(サンプル) |
|---|---|---|
| 1 | SiteId | サイトID |
| 2 | UpdatedTime | タイムスタンプ |
| 3 | ResultId | ItemsテーブルのResultId |
| 4 | Ver | 1 |
| 5 | Creator | 1 |
| 6 | Updator | 1 |
| 7 | CreatedTime | タイムスタンプ |
まとめ
本記事では、プリザンターの記録テーブル(ItemsテーブルおよびResultsテーブル)に対し、履歴管理やバージョン制御を経由せず、SQL Server上から直接データを追加する方法について解説しました。
内部構造や必須カラム、SiteIdの取得方法、ReferenceTypeの固定値、そして両テーブル間の関連性を理解することで、アプリケーション層を経由せずにデータを投入する際のポイントを押さえることができます。
この手法は履歴管理やバージョン制御の仕組みを経由しないため、データ追加処理をシンプルかつ効率的に行える点が特徴です。用途や要件に応じて、開発・検証環境で十分に確認を行えば、本番運用でも柔軟なデータ投入方法として活用できる可能性があります。