gpt4 book ai didi

sql-server-2005 - 如何在 SQL Server 2005 中更新插入(更新或插入)

转载 作者:行者123 更新时间:2023-12-03 01:34:23 26 4
gpt4 key购买 nike

我有一个表,我在其中为员工插入行,但下次当我想插入行时,我不想再次为该员工插入数据,只想更新所需的列(如果该列存在的话),然后创建新行

我们如何在 SQL Server 2005 中做到这一点?

我正在使用jsp

我的查询是

String sql="insert into table1(id,name,itemname,itemcatName,itemQty)values('val1','val2','val3','val4','val5')";

如果是第一次,则将其插入数据库,否则如果存在则更新

怎么办?

最佳答案

尝试检查是否存在:

IF NOT EXISTS (SELECT * FROM dbo.Employee WHERE ID = @SomeID)

INSERT INTO dbo.Employee(Col1, ..., ColN)
VALUES(Val1, .., ValN)

ELSE

UPDATE dbo.Employee
SET Col1 = Val1, Col2 = Val2, ...., ColN = ValN
WHERE ID = @SomeID

您可以轻松地将其包装到存储过程中,然后从外部调用该存储过程(例如,从 C# 等编程语言或您正在使用的任何语言)。

更新:您可以将整个语句写在一个长字符串中(可行 - 但不是很有用) - 或者您可以将其包装到存储过程中:

CREATE PROCEDURE dbo.InsertOrUpdateEmployee
@ID INT,
@Name VARCHAR(50),
@ItemName VARCHAR(50),
@ItemCatName VARCHAR(50),
@ItemQty DECIMAL(15,2)
AS BEGIN
IF NOT EXISTS (SELECT * FROM dbo.Table1 WHERE ID = @ID)
INSERT INTO dbo.Table1(ID, Name, ItemName, ItemCatName, ItemQty)
VALUES(@ID, @Name, @ItemName, @ItemCatName, @ItemQty)
ELSE
UPDATE dbo.Table1
SET Name = @Name,
ItemName = @ItemName,
ItemCatName = @ItemCatName,
ItemQty = @ItemQty
WHERE ID = @ID
END

然后只需从 ADO.NET 代码调用该存储过程

关于sql-server-2005 - 如何在 SQL Server 2005 中更新插入(更新或插入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010511/

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