0

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

  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 中添加更新查询,其中技能名称不应重复。

4

1 回答 1

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
于 2012-07-13T11:11:49.187 回答