如何解决此SQL问题并在两列中添加依赖项

时间:2019-02-01 16:55:45

标签: sql-server

只应存在一个特定客户的一个帐号和客户ID。但是现在,我可以为另一个客户名称插入相同的帐号和ID!

如何写一个SQL查询,这样,如果一个客户有一个ID和账户号码,我不能代表其他客户插入这些值?客户ID和帐号将是一个,并且仅适用于该客户。

以下是用于说明的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:0)

我并没有真正理解您的意思,但是据我了解,您希望看到例如数据ID = 1 acc.number = A_1应该仅对应于客户JOHN 而且id = 1 acc.number = A_2也可以对应于John

或id = 1且acc.number = A_3(或id = 2,acc.muber = A_1)例如可以对应于Peter

在这种情况下,创建表

当你应该有该行
Primary key (customer_id, account_number)

更多内容:https://weblogs.sqlteam.com/jeffs/2007/08/23/composite_primary_keys/

答案 1 :(得分:0)

您当前正在使用复合主键。换句话说,密钥被声明为(customer_id,account_number)。这意味着两者的组合保证是唯一的。

根据您的描述,这不是您想要的。您需要两个密钥,一个密钥(customer_id)和另一个密钥(account_number)。

每个表只能有一个主键。但是,使用“唯一性”约束,您可以(在逻辑上)做完全相同的事情,并且可以创建许多“唯一性”约束。

在这种情况下,您可以将主键更改为customer_id,然后为account_number添加唯一约束。