我有一个表,我在其中插入行为员工,但下一次当我想插入行我不想再次插入该员工的数据只是想要更新与必需的列,如果它退出那里,如果没有,然后创建新行
我们如何在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。