首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSTGRES约束检查

POSTGRES约束检查
EN

Stack Overflow用户
提问于 2022-11-18 15:06:02
回答 1查看 34关注 0票数 0
代码语言:javascript
复制
CONSTRAINT proper_matricula CHECK (matricula ~  '[a-Za-Z][a-Za-Z][0-9][0-9][a-Za-Z][a-Za-Z]' OR '[0-9][0-9][a-Za-Z][a-Za-Z][0-9][0-9]')

);

试图进行约束检查,查看给定的汽车牌照是否有效。它给出了这个错误:布尔型的输入语法无效:"0-9a-Za-Z0-9“

EN

回答 1

Stack Overflow用户

发布于 2022-11-18 18:44:06

首先这样做:

代码语言:javascript
复制
CONSTRAINT proper_matricula 
CHECK 
(
  matricula ~  '[a-Za-Z][a-Za-Z][0-9][0-9][a-Za-Z][a-Za-Z]' 
  OR '[0-9][0-9][a-Za-Z][a-Za-Z][0-9][0-9]'
)
); --  <<=== Extra ')'   

如果您正确地格式化代码,您可以很容易地看到,在您的)声明中有一个额外的CONSTRAINT (右括号)--只需删除它就可以了。

但是,请参阅下面的其他错误,这些错误也需要纠正!

  • ALTER TABLE test ADD声明前面没有CONSTRAINT
  • 最后,您需要复制字段名--“或胃=.”

代码语言:javascript
复制
(
   matricula ~ '...'
   OR
   matricula ~ '...'
)

看小提琴这里

编辑-回应OP的评论。

您也可以这样做:

代码语言:javascript
复制
CREATE TABLE test_2 
(
  matricula TEXT NOT NULL

  CONSTRAINT proper_matricula 
  CHECK 
  (
    matricula ~  '[a-Za-Z][a-Za-Z][0-9][0-9][a-Za-Z][a-Za-Z]' 
    OR 
    matricula ~ '[0-9][0-9][a-Za-Z][a-Za-Z][0-9][0-9]'  
  )
);

CONSTRAINT要么必须是in中的TABLE定义本身,要么您必须指定

代码语言:javascript
复制
 ALTER TABLE test ADD... 

否则,服务器如何知道您所指的是哪个TABLE --它可能是数据库/模式中的任何一个表?

小提琴这里.

最后,正如已经指出的,您应该始终在您的问题中包含尽可能多的相关信息。在这个问题中,了解CHECK是否已经是TABLE定义的一部分还是是一段独立的代码是很有用的。我现在已经把这两件案子都办好了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74491657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档