gpt4 book ai didi

mysql - 插入...重复键更新,但不是真的...?

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

嗨,我一直在尝试让它工作,我以为我已经用 mysql - INSERT...ON DUPLICATE KEY UPDATE 实现了它,但没有运气。

我有一个这样的表:

sessionID是唯一的,ProductID 引用另一个表,不是唯一的,但也不常见,最多应该有 3 行包含相同的值,sessionType 为 1、2 或 3,并且将与 ProductID 链接,

我需要检查表中是否有一行包含一对匹配的productID 和sessionType,如果存在则该行中的sessionDate 和sessionCapacity 应更新,如果不存在则插入新行。

$vals = array($pID,$data['pSessionDate'],'1',$data['pQty'],$pID,$data['pSessionDate'],'1',$data['pQty']);
$db->Execute("INSERT INTO VividStoreSessions (pID,sDate,sType,sCapacity) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE pID=?,sDate=?,sType=?,sCapacity=?",$vals);

希望这对某人有意义,并提前感谢您的帮助!

最佳答案

您的插入内容看起来有效。但是,首先您需要一个唯一的索引/约束:

create unique index unq_VividStoreSessions_productId_sessionType
on VividStoreSessions, productId, sessionType)

然后您可以编写只使用四个参数的代码:

INSERT INTO VividStoreSessions (pID, sDate, sType, sCapacity)
VALUES (? ,?, ?, ?)
ON DUPLICATE KEY UPDATE sDate = VALUES(sDate), Capacity = VALUES(Capacity);

最后,您需要确保 sType 仅采用 1、2 或 3 的值。也许您希望在应用程序层强制执行此操作。否则,您需要触发器或外键约束来确保只有三行。

关于mysql - 插入...重复键更新,但不是真的...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710441/

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