我试图在SQL表中设置一个属性,该属性由用户输入和部分外键指定的部分ID组成。例如:员工的id为8个字符,前4个数字是用户输入的部分,后4个字符将引用分支表以使用分支ID。
看起来我需要使用CHECK约束来执行此操作,但我不确定如何强制执行属性值的第二部分以确保它在另一个表中。
我希望这个问题正确,因为我还在学习SQL。
答案 0 :(得分:1)
看起来我需要使用CHECK约束来执行此操作, 但我不确定如何强制执行属性的第二部分 值以确保它在另一个表中。
为了“查看”另一个表,您需要在CHECK约束中使用SELECT语句。据我所知,大多数SQL dbms都不允许你这样做。 (如果不这样,标准SQL将使用断言;我不确定任何 SQL dbms是否支持断言。)
相反,使用两列 - 一列用于用户提供的四个字符,另一列用于表示分支的最后四个字符。你可以(而且应该)使用
外键约束给你的行为保证很重要。它们保证您在新表中用于branch_id的任何值都将存在于分支表中,并且如果使用的branch_id发生更改,则该更改也将记录在新表中。 (如果您级联更新。)如果将两个值捆绑到一个列中,则无法获得这些保证。
最后4个字符将引用分支表来使用 分支ID。
您可以复制分支ID,但不能引用它。 参考是数据库设计中的技术术语;它与外键引用有关。