gpt4 book ai didi

php - SQL Server 的插入忽略的替代方案

转载 作者:行者123 更新时间:2023-11-29 16:35:44 24 4
gpt4 key购买 nike

我刚刚从 Mysql 服务器切换到 SQL 服务器。但我刚刚发现 INSERT INGORE INTO 不适用于 sql server。原始代码:

INSERT IGNORE INTO DATA_EXACT_INVENTORY_LOCATIONS (ID, Code, Opslaglocatie, Omschrijving, OpVoorraad)
VALUES ('$inventorylocationID','$inventorylocationsItemCode','$inventoryStorageLocationsCode','$inventorylocationsItemDescription','$inventorylocationsCurrenctStock')

我发现我可以使用重复键更新,但问题是我的 SQL 查询最多包含 50 个变量。因此,用于重复 key 更新将需要大量工作。所以我想知道是否有更好的替代方法 INSERT IGNORE INTO ,它只是即插即用,所以我不必再次编写所有变量。

最佳答案

您可以使用不存在:

INSERT DATA_EXACT_INVENTORY_LOCATIONS (ID, Code, Opslaglocatie, Omschrijving, OpVoorraad)
SELECT ID, Code, Opslaglocatie, Omschrijving, OpVoorraad
FROM (VALUES ('$inventorylocationID', '$inventorylocationsItemCode', '$inventoryStorageLocationsCode', '$inventorylocationsItemDescription', '$inventorylocationsCurrenctStock')
) V(ID, Code, Opslaglocatie, Omschrijving, OpVoorraad)
WHERE NOT EXISTS (SELECT 1
FROM DATA_EXACT_INVENTORY_LOCATIONS deil
WHERE deil.id = v.id -- or whatever column gets the duplicate key
);

或者,您可以重写代码以使用MERGESELECT 应该适用于两个数据库。

我还要补充一点,你应该学会使用参数。使用常量值修改查询字符串会使您的代码遭受 SQL 注入(inject)攻击和难以调试的语法错误。

关于php - SQL Server 的插入忽略的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53611915/

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