如何更新外键?

时间:2019-03-31 17:09:31

标签: sql sql-server

我创建两个表,customer和customer_order。

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

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

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

1 个答案:

答案 0 :(得分:2)

大概是您将电子邮件用作订单中的外键参考。更改电子邮件时,最终会出现对'user@email.com'的“悬挂”引用。

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

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

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

但是,如评论中所述,最好有一个客户ID并使用它。然后,您可以更改没有任何此类问题的电子邮件。