【发布时间】:2020-07-20 06:53:47
【问题描述】:
想了解是否有一种方法可以在 PostgreSQL 数据库中的所有表中为公共特定列添加唯一约束?
例如,考虑一个名为“School”的 PostgreSQL 数据库。它有 2 个表,分别命名为“teachers”和“students”。
“teachers”表有teacher_id、first_name、last_name、homeroom_number、department、email和phone列。
“学生”有,student_id、first_name、last_name、homeroom_number、phone、email、graduation_year 列。
我想确保在将数据插入到各自的表中时,“教师”和“学生”中的电子邮件和电话列都是唯一的。
通常在添加 UNIQUE 约束时,它仅作为表约束(表范围)或列约束(仅适用于特定表中的特定列)添加。因此,如果将 UNIQUE 约束添加到“teachers”表中的 email 和 phone 列,则这些值仅在“teachers”表中是唯一的。如果对“students”表执行相同的操作,电子邮件和电话号码也将仅在“students”表中是唯一的。如何添加适用于“教师”和“学生”表中的电话和电子邮件列的唯一约束,以便每个电话号码和电子邮件地址对每个人都是唯一的,无论该人是教师还是学生?例如,如果在“教师”表中插入教师的电话号码为 123-456-789,则在“学生”表中为学生插入相同的电话号码 123-456-789 将引发错误。
【问题讨论】:
-
您需要将电话号码移动到单独的表中,并从“student”和“teacher”表到“phone_number”表中创建一个外键
标签: postgresql