带有char的SQL主键默认值

时间:2015-03-17 13:15:39

标签: sql

我需要将我的主键与员工和用户区分开来,所以我希望我的主键能让员工拥有E' E'在数字之前甚至可能吗?

2 个答案:

答案 0 :(得分:1)

这样做是个坏主意,不仅因为它增加了不应该存在的主键的意义(如果你决定聘用一个用户怎么办?),还因为它需要你改变一个int字段到char / varchar,减慢查询速度。

要完成你想要的(我认为),你可以创建另一个名为PersonType的字段,然后你可以“从Personee中选择*,其中PersonType ='E'”等。您甚至可以在PersonType上放置一个索引,以便更快地对其进行查询。

您是否希望为员工与用户存储不同的数据?例如,您是要存储员工的家庭地址而不是您的用户,或者您的用户的信用卡号,而不是您的员工?在这种情况下,您需要另一个来保存其他信息,而不仅仅是另一列。

答案 1 :(得分:0)

如果你想显示类似的内容,我会使用自动生成的数字作为我的PK。然后我会有一个person_type列,然后我可能会有一个持久计算列,将两者结合起来。

注意我只会这样做从不这两个人。如果某人可能同时属于这两个类别,我会为person_type创建一个相关表,并将持久计算列添加到此表中。