0
我在Postgres中比較新。有沒有什麼辦法可以爲檢查所有字符字段和測試的表編寫一個約束,以確保沒有前導或尾隨字符?如果字段中有任何值?Postgres中的表寬約束條件
這樣我就不必在編寫約束時逐項列出每個字符字段。
謝謝!
我在Postgres中比較新。有沒有什麼辦法可以爲檢查所有字符字段和測試的表編寫一個約束,以確保沒有前導或尾隨字符?如果字段中有任何值?Postgres中的表寬約束條件
這樣我就不必在編寫約束時逐項列出每個字符字段。
謝謝!
不,你不能在我意識到的情況下編寫這樣的約束。
你可以做的是對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,
...
);
有效地傳達你的約束檢查到域的水平。
檢查約束會做到這一點 - 但每個列需要一個。沒有辦法爲此使用通配符 –