在一个过程中执行插入和更新操作

时间:2015-07-29 06:21:05

标签: mysql sql sql-server-2008

我在数据库中有一个表Country,其中包含以下字段

  • CountryId
  • 国家或地区名称

现在我必须编写一个程序,首先检查@CountryName是否存在。如果它已经存在,它应该更新该行。如果它不存在,它应该执行插入操作...

3 个答案:

答案 0 :(得分:2)

我认为下面的脚本可以帮助你。

CREATE PROCEDURE ProcedureName
@CountryName nvarchar(100),
@CountryID int

AS
BEGIN

IF EXISTS (SELECT 1 FROM dbo.Country WHERE CountryName = @CountryName)
BEGIN
    --UPDATE
END

ELSE
BEGIN
    --INSERT
END

END

您也可以使用SQL的merge关键字执行上述代码 找到参考 here

答案 1 :(得分:2)

Create Proc [ProcedureName]
@CountryName nvarchar(100)
As
Begin
Declare @Count int
Set @Count = (Select count(CountryId) from Country where CountryName = @CountryName)
if @Count > 0
Begin
-- update 
End
else
begin
-- insert
end

End

答案 2 :(得分:2)

如果是您正在使用的SQL Server 2005(或更高版本)版本,请考虑使用MERGE语句。 Documentation for MERGE here.

merge [country] as target
using (select @CountryID, @CountryName) as source(id, name)
on (target.Countryid = source.id)
when matched then
    update set CountryName = @CountryName
when not matched then
    insert (CountryId, CountryName) values (source.id, source.name);