sql - 如何更新外键?
问题描述
我创建了两个表,customer 和 customer_order。
并设置列 custmoer_email(foreign_key 和唯一)我尝试制作以下代码来更新列:
UPDATE customer
SET customer_email = 'user2@email.com'
WHERE customer_email = 'user@email.com';
由于外键,这给了我一个错误,你如何更新customer_email的信息?
解决方案
据推测,您正在使用电子邮件作为订单中的外键参考。当您更改电子邮件时,您最终会得到一个对'user@email.com'
.
您想要的是级联外键引用。像这样的东西:
alter table orders add constraint fk_orders_customer_email
foreign key (customer_email) references customers(customer_email)
on update cascade;
(在删除现有约束后执行此操作。)
不过,正如评论中提到的,最好有一个客户 ID 并使用它。然后,您可以更改没有此类问题的电子邮件。
推荐阅读
- python - 给定一个变量,我可以看到用于定义该变量的代码字符串吗?
- r - 在ggplot中映射残差时添加图例
- python - 从 pandas 列中拆分字符串
- highcharts - Highcharts中的静态Y轴?
- java - 为什么我的方法没有收到我的布尔值?
- java - SFSF OData 调用:无法将响应转换为 ODataFeed:发生“EdmSimpleTypeException”
- python-3.x - 如何使用 Python 计算临界卡方值
- python - 将用户创建的函数输出导出为 pdf
- php - 我想在我的 php 表中只显示第 1 行的图像,但它的图像出现在第 1,2 和 3 行
- python - 将 np.array 或 python 列表对象保存为 BigQuery 中的单个记录的最佳方法?