只应存在一个特定客户的一个帐号和客户ID。但是现在,我可以为另一个客户名称插入相同的帐号和ID!
如何写一个SQL查询,这样,如果一个客户有一个ID和账户号码,我不能代表其他客户插入这些值?客户ID和帐号将是一个,并且仅适用于该客户。
以下是用于说明的屏幕截图:
答案 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添加唯一约束。