1
我正在將數據庫從SQL Server移動到PostgreSQL,並在其中一個表中檢查約束時遇到了一些問題。 PostgreSQL版本是9.5.1。PostgreSQL列上的字符串格式約束不起作用
我有一個表,我創建一個檢查約束列強制執行格式。這在SQL Server中起作用。這個想法是,只有以字母AF開頭並且後跟三個數字字符(例如AF001)的值可以輸入到其中一列中。
的SQL看起來像這樣來創建表:
CREATE TABLE TableName (
referenceID VARCHAR(5) NOT NULL CHECK (referenceID LIKE 'AF[0-9][0-9][0-9]'),
comment VARCHAR(50) NOT NULL,
PRIMARY KEY (referenceID)
);
但是當我嘗試進入失敗的任何數據。數據錄入的例子:
INSERT INTO TableName (reference, comment) VALUES ('AF000','A comment');
我得到的錯誤是:
ERROR: new row for relation "tablename" violates check constraint "tablename_referenceID_check"
DETAIL: Failing row contains (AF000, A comment).
********** Error **********
ERROR: new row for relation "TableName" violates check constraint "tablename_referenceID_check"
SQL state: 23514
Detail: Failing row contains (AF000, A comment).
我假設的問題是與實際的檢查約束,但我不能確定。