sql-server-2005 – 如何在SQL Server 2005中提升(更新和插入)

我有一个表,我在其中插入行为员工,但下一次当我想插入行我不想再次插入该员工的数据只是想要更新与必需的列,如果它退出那里,如果没有,然后创建新行

我们如何在sql Server 2005中执行此操作?

我正在使用jsp

我的查询

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

如果它是第一次,然后将其插入到数据库else如果存在更新它

怎么做?

解决方法

尝试检查存在:
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.InsertOrUdpateEmployee
       @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代码调用该存储过程

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...