mysql - 写入 UPDATE 语句时出现重复主键错误

标签 mysql sql

我正在尝试使用 UPDATE 语句更新两个表。我的目标是: 此脚本将从#562 行程中删除 Lamar Lincoln 的预订, 它将为拉马尔·林肯 (Lamar Lincoln) 添加新的预订#564 行程。 作为替代方案,您可以通过更新事务来达到相同的目的。 但是,我收到一条错误消息,指出“我有重复的 key ,6-562?” trip_number 和 guest_id 都是主键,但 Lamar (guest_id = 9) 有两次行程:562、579。 This is my DB design

use www;
UPDATE reservation
SET trip_number=564,
WHERE trip_number=562, guest_id=9;

最佳答案

尝试 Galz 建议的语法。如果您遇到相同的错误,则 reservation 中必须有一条 trip_number 562 和 guest_id 9 的记录。

最佳实践:在创建记录后不要更改主键值,即使对于像这样的链接表中的复合主键也是如此。

DELETE FROM reservation WHERE guest_id = 9 AND trip_number = 562;
INSERT INTO reservation (guest_id, trip_number) VALUES (9, 564);

关于mysql - 写入 UPDATE 语句时出现重复主键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984008/

相关文章:

mysql - 获取每个订单的成本和时间

javascript - 如果可能的话,通过 php 将值从 Javascript 插入到 mysql

php - 将加载时的 jQuery 变量传递给 mysql 表

c++ - Qt在不在主类中的函数中执行SQL命令

mysql - 在 32 位或 64 位 Linux 操作系统服务器上使用 Nginx+mysql 运行 Ruby on Rails + Phusion Passenger 及其性能?

php - 尝试将小计乘以运费百分比以获得总计

php - while ($stmt->fetch()) 不获取所有行

等效于 php DataGrid

c# - U-SQL 随机行样本

sql - 我需要找到一种方法来删除 SQL Server 备份文件夹中第三个 .bak 文件之后的所有内容