我正在创建一个报价系统,该系统实质上将允许某人接受报价,所有报价都存储在数据库中。
当某人接受报价#1时,我希望报价#2,#3,#4和#5(不确定的数量,或多或少)可以在数据库中自动更新。我的问题是报价没有固定的数目,因此我需要一些如何搜索该佣金的唯一ID并将其全部更改的方法。这是我迷路的地方。
答案 0 :(得分:0)
基本工作流程的小示例。
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为您提供唯一的IDY。然后在数据库中搜索佣金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)您可以通过使引号包含一个佣金编号字段来完全颠倒这种逻辑,以便您可以搜索WHERE commission_id = X
。
更新:
由于MySQL似乎没有等效的OUTPUT,因此可以在插入后使用LAST_INSERT_ID()
添加选择查询。
https://dev.mysql.com/doc/refman/8.0/en/getting-unique-id.html