1

'enum'フィールドが本当に好きだったInformixデータベースがあります。Informix(少なくとも私が制約されているバージョンでは)には組み込みの列挙型がないため、Google-Fooを使用して、次のような特定の値のみを許可するようにVARCHARフィールドを制約できることを確認しました。

ALTER TABLE table ADD CONSTRAINT CHECK (type IN ('type1',  'type2', 'type3'));

これはうまくいくようです。次に、ユーザー入力をこれらの有効な値と照合するPerlスクリプトからデータベースに接続する必要があります。もちろん、コードでそれらをチェックして、データベースに必要な値をコードが認識していることを確認できますが、スクリプトでデータベースの制約をクエリする方法があるかどうか疑問に思いました。したがって、追加/削除する必要があります。後で有効な入力を行うと、制約を変更するだけで、処理コードが適応します。

任意の提案をいただければ幸いです。

4

1 に答える 1

1

データベースアクセスをDBIx::Classスキーマにカプセル化すると、この種の検証が「ボーナスとして」得られます。既存のデータベースからスキーマを生成する簡単な方法は、 dbicdumpを使用することです。

于 2012-12-10T01:41:09.463 に答える