如何在 pgadmin 4 中正确添加检查约束
How to properly add a check constraint in pgadmin 4
我有一层地块,想禁用在市政当局("muni" 列)中添加错误语法条目或更改的可能性,我尝试了以下应该对其他人有用的方法:
"MUNI" IN ( 'CITY OF ITHACA',
'NEWFIELD',
'TOWN OF CAROLINE',
'TOWN OF DANBY',
'TOWN OF DRYDEN',
'TOWN OF ENFIELD',
'TOWN OF GROTON',
'TOWN OF ITHACA',
'TOWN OF LANSING',
'TOWN OF NEWFIELD',
'TOWN OF ULYSSES',
'VILLAGE OF CAYUGA HEIGHTS',
'VILLAGE OF DRYDEN',
'VILLAGE OF FREEVILLE',
'VILLAGE OF GROTON',
'VILLAGE OF LANSING',
'VILLAGE OF TRUMANSBURG'
)
这是 SQL
中的样子
ALTER TABLE public.parcels2007
ADD CONSTRAINT two CHECK ("MUNI" IN ( 'CITY OF ITHACA',
'NEWFIELD',
'TOWN OF CAROLINE',
'TOWN OF DANBY',
'TOWN OF DRYDEN',
'TOWN OF ENFIELD',
'TOWN OF GROTON',
'TOWN OF ITHACA',
'TOWN OF LANSING',
'TOWN OF NEWFIELD',
'TOWN OF ULYSSES',
'VILLAGE OF CAYUGA HEIGHTS',
'VILLAGE OF DRYDEN',
'VILLAGE OF FREEVILLE',
'VILLAGE OF GROTON',
'VILLAGE OF LANSING',
'VILLAGE OF TRUMANSBURG'
));
所以,这个想法是,当一个新条目被创建时,编辑器只能从这些条目中挑选。我这样做是作为课程的一部分,但是,我使用的是更新版本的 pgadmin 4 和 PostgreSQL 12。现在,我发现 https://github.com/sqlalchemy/sqlalchemy/issues/4463 某些语法已被弃用,但我不是技术人员-savvy 仍然了解这是否可能导致问题。因为在添加约束后,我可以将 'VILLAGE OF GROTON' 更改为任何内容,并且不会收到我应该收到的约束错误。
这个问题很愚蠢。如果您使用过 pgadmin 3,那么在您尝试输入它后,问题会立即出现,就像在 table 中的 ArcGIS 中一样,除非您输入正确的解决方案,否则不会让您离开。但是,在 pgadmin 4 中,您可以输入违反约束的错误名称,并且只有当您想要保存您的编辑时,它最终才会给出与之前相同的错误。所以,我很遗憾没有早点赶上这个,但我只是习惯了旧的方式。
我有一层地块,想禁用在市政当局("muni" 列)中添加错误语法条目或更改的可能性,我尝试了以下应该对其他人有用的方法:
"MUNI" IN ( 'CITY OF ITHACA',
'NEWFIELD',
'TOWN OF CAROLINE',
'TOWN OF DANBY',
'TOWN OF DRYDEN',
'TOWN OF ENFIELD',
'TOWN OF GROTON',
'TOWN OF ITHACA',
'TOWN OF LANSING',
'TOWN OF NEWFIELD',
'TOWN OF ULYSSES',
'VILLAGE OF CAYUGA HEIGHTS',
'VILLAGE OF DRYDEN',
'VILLAGE OF FREEVILLE',
'VILLAGE OF GROTON',
'VILLAGE OF LANSING',
'VILLAGE OF TRUMANSBURG'
)
这是 SQL
中的样子ALTER TABLE public.parcels2007
ADD CONSTRAINT two CHECK ("MUNI" IN ( 'CITY OF ITHACA',
'NEWFIELD',
'TOWN OF CAROLINE',
'TOWN OF DANBY',
'TOWN OF DRYDEN',
'TOWN OF ENFIELD',
'TOWN OF GROTON',
'TOWN OF ITHACA',
'TOWN OF LANSING',
'TOWN OF NEWFIELD',
'TOWN OF ULYSSES',
'VILLAGE OF CAYUGA HEIGHTS',
'VILLAGE OF DRYDEN',
'VILLAGE OF FREEVILLE',
'VILLAGE OF GROTON',
'VILLAGE OF LANSING',
'VILLAGE OF TRUMANSBURG'
));
所以,这个想法是,当一个新条目被创建时,编辑器只能从这些条目中挑选。我这样做是作为课程的一部分,但是,我使用的是更新版本的 pgadmin 4 和 PostgreSQL 12。现在,我发现 https://github.com/sqlalchemy/sqlalchemy/issues/4463 某些语法已被弃用,但我不是技术人员-savvy 仍然了解这是否可能导致问题。因为在添加约束后,我可以将 'VILLAGE OF GROTON' 更改为任何内容,并且不会收到我应该收到的约束错误。
这个问题很愚蠢。如果您使用过 pgadmin 3,那么在您尝试输入它后,问题会立即出现,就像在 table 中的 ArcGIS 中一样,除非您输入正确的解决方案,否则不会让您离开。但是,在 pgadmin 4 中,您可以输入违反约束的错误名称,并且只有当您想要保存您的编辑时,它最终才会给出与之前相同的错误。所以,我很遗憾没有早点赶上这个,但我只是习惯了旧的方式。