我想检查数据库中是否已存在某个值 - 如果存在,那么我将使用更新查询,否则我将执行插入。
我该怎么做?
答案 0 :(得分:0)
只需通过传递值来选择行。如果返回的rowcount> o表示表中有值。在这种情况下,更新它否则插入表格。
答案 1 :(得分:0)
您可以编写一个存储过程来检查该唯一字段是否已存在。一种方法是仅将SP用于插入,并检查该值是否已存在。如果返回yes,则可以调用Update-StoredProcedure。这种方法是安全的。
另一种方法是在检测到值存在时直接在“插入”-SP中更新。在我看来,这是混淆的代码。
IF (EXISTS (SELECT *
FROM YourTable
WHERE LoweredUniqueField = LOWER(@Value)))
BEGIN
-- you could use this output parameter as information
SET @InfoCode = 1
GOTO Cleanup
END
-- Else Insert new record:
INSERT INTO .....
Cleanup:
RETURN @InfoCode
END
答案 2 :(得分:0)
我认为您的问题不是特定于asp的,我假设您正在连接到MS SQL SERVER。
假设您有一个这样的简单表:
CREATE TABLE Products_table (
[ProductID] [int] NULL,
[Qty] [int] NULL
) ON [PRIMARY]
如果您想要更新给定产品的数量,否则创建它,您可以使用以下语句:
UPDATE Products_table SET Qty = 1000 WHERE ProductID = 10
INSERT INTO Products_table (ProductID,Qty)
SELECT 10 as ProductID, 1000 as ProductQty
WHERE
NOT EXISTS (SELECT 1
FROM Products_table
WHERE ProductID = 10
)
更新只有在ProductID = 10时才有效,而Insert只有在尚不存在时才会创建新行。您应该将两个语句作为查询放在单个SqlCommand中并执行它。
希望这有帮助。