4

一部の text/varchar フィールドでのスペースの使用を禁止したい。

さらに、次のように、そこで使用できる文字セットのみを使用することをお勧めします。

[a-zA-Z0-9_\-]

そして、ルールとして、テーブルVARCHARのメンバーであるすべてのフィールドに適用したいと考えています。primary key

これはデータベース レベルで行う必要があり、間違ったレコードを挿入しようとしたり、キー フィールドを無効な値に変更してレコードを更新しようとすると、例外がスローされる可能性があります。

これはデータベース レベルで実行できますか? そのために使用する必要Pl/Perlがありますか、それとももっと簡単な方法はありますか?

4

3 に答える 3

7

ストアド プロシージャも必要ありません。

alter table xxx add constraint check_valid_chars check ( your_column ~ '^[a-zA-Z0-9_\-]+$' );

動作するはずです。

于 2010-01-05T09:47:23.123 に答える
4

ドメインを定義できます。下部にあるhttp://www.postgresql.org/docs/current/interactive/sql-createdomain.htmlを見てください。米国の郵便番号に関する例があります。

于 2010-01-05T09:18:47.637 に答える
0

最新のコメントを見て、おそらくCHECK制約と正規表現検索を使用できますか? ただし、スキーマ (テーブル) を変更して、各フィールドに挿入する必要があります。

于 2010-01-05T09:42:50.580 に答える