2016-02-25 64 views
0

我在Postgres中比較新。有沒有什麼辦法可以爲檢查所有字符字段和測試的表編寫一個約束,以確保沒有前導或尾隨字符?如果字段中有任何值?Postgres中的表寬約束條件

這樣我就不必在編寫約束時逐項列出每個字符字段。

謝謝!

+0

檢查約束會做到這一點 - 但每個列需要一個。沒有辦法爲此使用通配符 –

回答

1

不,你不能在我意識到的情況下編寫這樣的約束。

你可以做的是對create a DOMAIN有檢查功能,然後使該域類型的所有表列。假設你指的是字符空格:

CREATE DOMAIN varchar_no_spaces AS varchar 
CHECK (left(VALUE, 1) <> ' ' AND right(VALUE, 1) <> ' ')); 

有這個CHECK表達許多變化,包括正則表達式,並使用不同的或多個字符。請參閱string functions瞭解更多選項。

然後:

CREATE TABLE mytable (
    f1  varchar_no_spaces, 
    ... 
); 

有效地傳達你的約束檢查到域的水平。