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

前端之家收集整理的这篇文章主要介绍了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代码调用该存储过程

猜你在找的MsSQL相关文章