18回答

0收藏

在Postgres如何限制特定列的可能值?

技术问答 技术问答 620 人阅读 | 18 人回复 | 2022-03-03

我想element_type在表(称为discussion)该列允许文本值教训或测试,但如果在该列中插入任何其他值,则会产生错误。' I8 ^7 k: P8 z! F$ c3 d
我知道我可以创建一个单独的表element_types,该表使用列element_id(主键,int)和element_type(唯一键,文本)来调用,并foreign_element_id在discussion引用该表element_types的column在表中创建外键element_id。或者,我可能会element_id完全忘记,只是设置它element_type主键。但是我想避免创建新手表。( d5 P2 d1 g& }$ Q0 K7 S1 i
在不创建新表的情况下,有没有更直接的方法来限制列中可能的值?
+ o; a, w4 |+ e$ t* V                                                                2 U& E2 k  t9 w* _8 _. H5 P" l
    解决方案:                                                               
9 _) e, g0 {& m* ?% Z                                                                可以加一个 CHECKCONSTRAINT:
, a: w' R- X' S% QALTER TABLE distributors    ADD CONSTRAINT check_types    CHECK (element_type = 'lesson' OR element_type = 'quiz');尽管IMO更清洁的选择是创造ENUM:1 n. M9 Z& W7 V7 C; u9 y
CREATE TYPE element_type AS ENUM ('lesson','quiz);
分享到:
回复

使用道具 举报

回答|共 18 个

就是这么回事

发表于 2022-3-3 23:43:38 | 显示全部楼层

支持,赞一个
回复

使用道具 举报

赵爽

发表于 2022-3-5 14:22:27 | 显示全部楼层

向楼主学习
回复

使用道具 举报

陌北尘

发表于 2022-3-6 03:52:04 | 显示全部楼层

鼎力支持!!
回复

使用道具 举报

虎凤蝶草堂

发表于 2022-3-7 03:01:08 | 显示全部楼层

回个帖子,下班咯~
回复

使用道具 举报

笑對人生

发表于 2022-3-7 18:24:37 | 显示全部楼层

回个帖子,下班咯~
回复

使用道具 举报

请给我留点时间

发表于 2022-3-8 10:39:01 | 显示全部楼层

小白一个 顶一下
回复

使用道具 举报

旅行的蒲公英

发表于 2022-3-8 21:02:59 | 显示全部楼层

求沙发
回复

使用道具 举报

周冰

发表于 2022-3-9 03:52:02 | 显示全部楼层

我只是路过,不发表意见
回复

使用道具 举报

深山哥

发表于 2022-3-9 09:42:24 | 显示全部楼层

边撸边过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐