Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将新记录插入到具有复合主键的表中_Mysql_Sql - Fatal编程技术网

Mysql 将新记录插入到具有复合主键的表中

Mysql 将新记录插入到具有复合主键的表中,mysql,sql,Mysql,Sql,这个问题可能很简单,但我一直在努力寻找解决方案。这里是我的表order,它有两个复合主键(order\u id,order\u detail\u id)。这只是为了举例说明,但我的prd表的概念是相同的 命令 我的问题是如何插入具有现有订单id的新记录。假设这些是现有的行 1 | 1 | 'Order 1 Detail 1' 1 | 2 | 'Order 1 Detail 2' 2 | 1 | 'Order 2 Detail 1' 现在我想在现有订单1中添加新的订单详细信息。我在InnoDB中

这个问题可能很简单,但我一直在努力寻找解决方案。这里是我的表order,它有两个复合主键(order\u id,order\u detail\u id)。这只是为了举例说明,但我的prd表的概念是相同的

命令

我的问题是如何插入具有现有订单id的新记录。假设这些是现有的行

1 | 1 | 'Order 1 Detail 1'
1 | 2 | 'Order 1 Detail 2'
2 | 1 | 'Order 2 Detail 1'

现在我想在现有订单1中添加新的订单详细信息。我在InnoDB中使用Mysql 5。非常感谢您的帮助。

在重复密钥更新时插入
如果您要为订单插入一条新记录\u id=1,您不会为订单\u detail\u id=3吗?主键仍然是唯一的。@GB是的,order\u detail\u id将是3,但我不知道数据库中存在什么,我希望在运行时对其进行管理。在插入之前,您可以从order where order\u id=(您的\u order\u id))中选择max(order\u detail\u id),然后在其中添加一个,然后插入?谢谢GB我发现solnIt不是一个问题,而是什么时候会给你带来问题。在订单详细信息表上创建一个自动增量,如果您确实需要行号,则在
选择
上分配行号,而此代码可能会解决问题,解决问题的方式和原因将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
insert into order 
    select order_id, max(order_detail_id) + 1, 'Order 1 Detail 3' 
    where order_id=1
insert into order 
    select order_id, max(order_detail_id) + 1, 'Order 1 Detail 3' 
    where order_id=1