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“
发布于 2022-11-18 18:44:06
首先这样做:
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。
(
matricula ~ '...'
OR
matricula ~ '...'
)看小提琴这里。
编辑-回应OP的评论。
您也可以这样做:
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定义本身,要么您必须指定
ALTER TABLE test ADD... 否则,服务器如何知道您所指的是哪个TABLE --它可能是数据库/模式中的任何一个表?
小提琴这里.
最后,正如已经指出的,您应该始终在您的问题中包含尽可能多的相关信息。在这个问题中,了解CHECK是否已经是TABLE定义的一部分还是是一段独立的代码是很有用的。我现在已经把这两件案子都办好了!
https://stackoverflow.com/questions/74491657
复制相似问题