javascript - 如何一次编辑无限数量的mysql行?
问题描述
我正在制作一个报价系统,基本上允许某人接受报价,所有报价都存储在数据库中。
当有人接受报价#1 时,我希望报价#2、#3、#4 和#5(数量不定,可能或多或少)在数据库中自动更新。我的问题是没有固定数量的报价,所以我需要一些如何搜索该佣金的唯一 ID 并将它们全部更改;这就是我迷路的地方。
解决方案
基本工作流程的小示例。
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
推荐阅读
- windows - 将批处理文件移动到批处理文件运行时添加的目录中
- amazon-cloudformation - Cloudformation 卡在 UPDATE_ROLLBACK_FAILED
- google-api - Google 拒绝敏感 GMail 范围的请求
- excel - 如何使用 VBA 创建具有多个行字段的数据透视表?
- mysql - LIKE 与 SUBSTR 一起使用时不返回任何记录
- php - 如何从字符串中提取和格式化特定值
- python - 如何组合不同的词嵌入集?
- reactjs - 与 redux 连接后,子组件在父组件中不起作用
- java - 将 RDD 转换为 DataFrame Spark Streaming 时的 ClassCastException
- python - 如何在 DatetimeIndex 中禁止除时间戳以外的键?