SQLiteデータベースをExcelワークブックに変換して元に戻すPerlベースのアプリケーションを作成しています。そのまま動作しますが、小さなピースが1つ欠けています。特定の列にUNIQUE制約が設定されているかどうかを判断する方法がわかりません。
データベース内のテーブルのリストを取得するには、次を使用します。
select name from sqlite_master
where type = 'table'
and name <> 'sqlite_sequence' order by name;
次に、各テーブルの列と制約の情報を取得するには、次のようにします。
PRAGMA table_info($TableName);
これにより、列でUNIQUE制約が有効になっている場合を除いて、知っておく必要のあるすべてのことがわかります。
これが明確でない場合のために、ここに簡単な例があります。これを実行してデータベーステーブルを作成するとします。
CREATE TABLE DATA
(
ID integer primary key,
Invoice integer unique,
Product varchar,
Comment varchar
);
この方法で作成されたSQLiteデータベーステーブルに後で問い合わせて、UNIQUE制約が設定されている列を特定する方法を知りたいです。この場合、それは請求書の列になります。
助言がありますか?