【发布时间】:2018-11-24 10:44:06
【问题描述】:
我有一个名为 STAFF 的设计表,它有 3 列用于 PostgreSQL。
staffId VARCHAR(6) PK,
firstName VARCHAR(50),
lastName VARCHAR(50)
我想建立一个 CHECK 约束,使 staffId 的前 2 个字母必须匹配 firstName 的第一个字母和 lastName 的第一个字母,并且最后四个数字不能与 staffId 中的另一个条目相同。
例如
John Smith - JS0001,
Lisa Jones - LJ0002
因此,如果 Joanne Smith 加入团队,那么 JS0002 将失败,因为 Lisa Jones 已经拥有 0002。
我该怎么做?
非常感谢。
【问题讨论】:
-
您不应该存储该前缀。如果始终相同,只需创建一个连接该信息的视图
-
我想要实现的目标是不是通常无法实现的目标?
-
良好数据库设计的一条规则是不要存储可以(容易)从现有信息中获得的信息。
标签: sql postgresql constraints