我创建两个表,customer和customer_order。
并设置列custmoer_email(foreign_key和唯一) 我尝试使以下代码更新该列:
UPDATE customer
SET customer_email = 'user2@email.com'
WHERE customer_email = 'user@email.com';
由于外键,这给了我一个错误,您该如何更新customer_email的信息?
答案 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并使用它。然后,您可以更改没有任何此类问题的电子邮件。