小编K M*_* Mo的帖子

PostgreSQL列上的字符串格式约束不起作用

我将数据库从SQL Server迁移到PostgreSQL,并在其中一个表中遇到了一些检查约束问题。PostgreSQL版本是9.5.1。

我有一个表,该表在其中一列上具有检查约束以强制执行格式。这在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)   
);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试输入任何数据时,它将失败。数据输入示例:

INSERT INTO TableName (reference, comment) VALUES ('AF000','A comment');
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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).
Run Code Online (Sandbox Code Playgroud)

我假设问题出在实际的检查约束上,但是我不确定。

format postgresql check-constraint

4
推荐指数
1
解决办法
670
查看次数

标签 统计

check-constraint ×1

format ×1

postgresql ×1