首页 > 解决方案 > 如何更新外键?

问题描述

我创建了两个表,customer 和 customer_order。

并设置列 custmoer_email(foreign_key 和唯一)我尝试制作以下代码来更新列:

UPDATE customer 
SET customer_email = 'user2@email.com'
WHERE customer_email = 'user@email.com';

由于外键,这给了我一个错误,你如何更新customer_email的信息?

标签: sqlsql-server

解决方案


据推测,您正在使用电子邮件作为订单中的外键参考。当您更改电子邮件时,您最终会得到一个对'user@email.com'.

您想要的是级联外键引用。像这样的东西:

alter table orders add constraint fk_orders_customer_email
    foreign key (customer_email) references customers(customer_email)
        on update cascade;

(在删除现有约束后执行此操作。)

不过,正如评论中提到的,最好有一个客户 ID 并使用它。然后,您可以更改没有此类问题的电子邮件。


推荐阅读