首页 > 解决方案 > 如何一次编辑无限数量的mysql行?

问题描述

我正在制作一个报价系统,基本上允许某人接受报价,所有报价都存储在数据库中。

当有人接受报价#1 时,我希望报价#2、#3、#4 和#5(数量不定,可能或多或少)在数据库中自动更新。我的问题是没有固定数量的报价,所以我需要一些如何搜索该佣金的唯一 ID 并将它们全部更改;这就是我迷路的地方。

标签: javascriptmysqldiscord.js

解决方案


基本工作流程的小示例。

1) 客户收取佣金。该佣金作为佣金 X 插入数据库。您应该在该佣金行中提供一个字段以添加报价的 ID 引用。

INSERT INTO COMMISSIONS ( date, request, quotes ) OUTPUT INSERTED.id VALUES ( 2019-xx-xx, 'make a logo', '[]' ); 这会为您提供佣金 ID X。

2) 客户然后向自由职业者发送报价请求,提及 X 作为他们应该回应的佣金。一位自由职业者回复了 X 佣金的报价。

3)您将新报价插入数据库。INSERT 为您提供唯一 ID Y。然后您在数据库中搜索佣金 X 并将 Y 添加到其报价字段。

INSERT INTO QUOTES ( date, quote, state ) OUTPUT INSERTED.id VALUES ( 2019-xx-xx, 'someBase64Image', 'pending' );这给了你报价 id Y

UPDATE COMMISSIONS SET quote = quote + 'Y' WHERE id = X;

X 是给定的,因为自由职业者响应了某个佣金请求。引号字段需要一些解析规则,具体取决于其数据类型。

4) 客户在报价之间进行选择,并告诉您他们选择了哪一个。

5) 您在数据库中搜索报价字段中包含 id Y 的佣金。您现在可以从佣金报价字段中获得该佣金的所有报价的 ID,并且可以搜索+拒绝那些不是 Y 的 ID。

UPDATE QUOTES SET state = 'accepted' WHERE id = Y;

SELECT * FROM COMMISSIONS WHERE [quotes] LIKE '%Y%'; 从佣金中提取所有报价 ID。遍历所有这些 ID。

UPDATE QUOTES SET state = 'rejected' WHERE id = id_from_quotes_field_commission_X

x) 您可以通过让报价有一个commission_id 字段来完全颠倒这个逻辑,这样您就可以进行搜索WHERE commission_id = X

更新:

由于 MySQL 似乎没有等效的 OUTPUT,因此您可以在插入后使用LAST_INSERT_ID(). https://dev.mysql.com/doc/refman/8.0/en/getting-unique-id.html


推荐阅读