2016-05-25 170 views
1

我正在製作一個數據庫與PostgreSQL。在一個表中的一個屬性,應該是可能的insert編號:「+」「 - 」,但沒有其他字符像「A」「B」「!」Postgresql檢查插入輸入

當我使用INSERT INTO函數時,可以檢查輸入嗎? 我不知道,因爲我只是Postgre的初學者,並沒有在互聯網上找到解決方案。

如果有人知道答案,謝謝!

+1

我們甚至可以用支票約束使用正則表達式來完成。(或者只是使用數字數據類型之一)需要任何觸發器。請參閱https://www.postgresql.org/docs/9.5/static/sql-createtable.html(在:檢查) – wildplasser

回答

1

而不是觸發器,您可以使用該列的值CHECK constraint。 (甚至使它成爲一個域或類型)

CREATE TABLE meuk 
     (id serial NOT NULL PRIMARY KEY 
     , thefield varchar CHECK (thefield SIMILAR TO e'[0-9\+\-]+') 
     ); 

INSERT INTO meuk(thefield) VALUES ('1234'); 
INSERT INTO meuk(thefield) VALUES ('+1234'); 
INSERT INTO meuk(thefield) VALUES ('-1234'); 
INSERT INTO meuk(thefield) VALUES ('-1234a'); -- this one should fail 

SELECT * FROM meuk; 
+0

非常感謝。這有很大幫助。 – Klipo