gpt4 book ai didi

php - 如何将其他两个表的最后插入的唯一组合外键作为单键

转载 作者:行者123 更新时间:2023-11-29 11:49:20 25 4
gpt4 key购买 nike

让我们看三个表...USER产品订单。

USER(user_id,name); 
PRODUCT(product_id,price);
ORDERS(user_id,product_id,order_code,paid);

这里,ORDERS 表中的 user_id 和 Product_id 作为 USER 和 PRODUCT 表的外键,它们一起构成了唯一索引。

好吧..

假设用户表和产品表中有数据行。
因此,我将插入到 ORDERS 表中

INSERT INTO ORDERS(user_id,product_id,paid) VALUES ('2','1','true');

SELECT @lid:= /* some function which can return last inserted combination of foreign keys as single identifier */;

UPDATE ORDERS SET order_code=concat(
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@lid)*4294967296))*36+1, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)
)
WHERE /*in here combined foreign key*/ = @lid;

我想获取两个外键的最后插入的 id(如 LAST_INSERT_ID)作为单个键,可用于更新表。

现在,我知道我可以通过向 ORDERS 表引入主键来解决此问题。但是,我不想那样做。

我也搜索过此类问题,但没有解决我的问题。

任何帮助都是值得赞赏的。提前致谢。

最佳答案

嗯,这可能有用......创建一个名为 inc 的带有 auto_increment 的列,然后

INSERT INTO ORDERS(user_id,product_id,paid) VALUES ('2','1','true');

SELECT @lid:= select max(inc) from ORDERS;

UPDATE ORDERS SET order_code=concat(
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@lid)*4294967296))*36+1, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1)
)
WHERE inc = @lid;

你已经完成了。

关于php - 如何将其他两个表的最后插入的唯一组合外键作为单键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34414429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com