插入和更新表

时间:2012-07-13 06:45:31

标签: sql-server-2008-r2

我有一张表格,其中的数据如下:

  SkillId     SkillName   Experience    KnowledgeLevelXId
    6            c++          NULL             NULL
    7          Asp.net        NULL             NULL
    9            Flex         NULL             NULL
    10      Flash builder     NULL             NULL

我为插入写了一个Sp

ALTER PROCEDURE [dbo].[SkillSettingSave] 
(
     @SkillName varchar(100)
)   
AS
BEGIN

    INSERT INTO [HRM_SkillSetting]
        (
         [SkillName]
        )
    VALUES
        (
         @SkillName 
        )

我需要在sp上面添加更新查询,其中不应重复技能名称。

1 个答案:

答案 0 :(得分:0)

您可以使用exists检查是否存在记录。为了避免竞争条件,你可以在一个声明中做到:

ALTER PROCEDURE [dbo].[SkillSettingSave] 
(
     @SkillName varchar(100)
)
AS
BEGIN

    INSERT INTO [HRM_SkillSetting]
        (
         [SkillName]
        )
    -- Instead of using values you might use select
    SELECT @SkillName 
    -- And insert row only if it does not exists
     WHERE NOT EXISTS (SELECT NULL
                         FROM [HRM_SkillSetting]
                        WHERE SkillName = @SkillName
                      )
END