请帮我解决这个问题

时间:2013-11-16 10:38:41

标签: sql-server

我将countryId和countrname命名为33和india,如果我给出相同的countryid和countryname,则必须将消息更新为。请告诉我代码......我这样写的

IF EXISTS (SELECT * FROM  Table1 WHERE CountryName=@CountryName )
    BEGIN
        SELECT 'already exists'
    END 
ELSE BEGIN
    UPDATE Table1
    SET
        CountryName = @CountryName 
    WHERE CountryId   = @CountryId                               
    SELECT @QStatus = 'values updated';
END

1 个答案:

答案 0 :(得分:1)

您的IF语句逻辑不正确。 UPDATE用于更改现有行,因此如果该行不存在,则UPDATE没有任何内容。

您需要使用INSERT

IF EXISTS (SELECT * FROM  Table1 WHERE CountryName=@CountryName )
    BEGIN
        SELECT 'already exists'
    END 
ELSE BEGIN
    INSERT Table1 (CountryName, CountryId)
    VALUES (@CountryName, CountryId)                               
    SELECT @QStatus = 'values inserted';
END

但是,如果你需要做的是替换传入的ID的国家/地区名称,可以使用

IF EXISTS (SELECT * FROM  Table1 WHERE CountryId=@CountryId )
BEGIN
    UPDATE Table1
    SET
        CountryName = @CountryName 
    WHERE CountryId   = @CountryId                               
    SELECT @QStatus = 'values updated';
END

从您提供的SQL中,很难说出您实际上想要做什么。