微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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代码调用该存储过程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐