我有两张桌子:
create table customer
(
cust_id
cust_name
)
create table customerphone
(
customerphone_phone,
cust_id,
)
cust_id必须存在于两个表中,我该如何检查?
答案 0 :(得分:4)
单独使用声明性参照完整性(DRI)无法做到这一点。添加外键约束只是解决方案的一部分。您还需要将插入事务和业务逻辑包装到2个表中。我建议在存储过程中执行此操作,以便从应用程序的角度将其作为原子操作进行操作。
Begin Transaction
Logic around inserting a Customer
Logic around inserting CustomerPhone row
If the newly added Customer has a CustomerPhone
Commit Transaction
Else
Rollback Transaction
答案 1 :(得分:2)
在表cust_id
上设置customer
主键。
然后在表cust_id
上设置customerphone
个外键,该地址指向cust_id
上的customer
。
如果customerphone
中已存在cust_id
,则只能向customer
添加行。
答案 2 :(得分:0)
您可以使用客户中的 cust_id 作为PRIMARY KEY,并使用外键来限制 customerphone 中的 cust_id 强>
您可以使用本手册自我指导: https://technet.microsoft.com/en-us/library/ms175464(v=sql.105).aspx