Sql 检查表中不同字段的值组合是否存在

Sql 检查表中不同字段的值组合是否存在,sql,sql-server-2008,Sql,Sql Server 2008,我正在编写一个存储过程,在插入值之前需要检查一些约束 表中不应存在姓名、性别和总部代码的组合。我正在使用选择1进行此约束检查。如果组合不存在,则仅执行insert语句,如果组合已存在,则打印消息。请参见代码中的注释部分。但不能再继续下去了 create proc_set_ref_staff @name varchar(50), @sex varchar(1), @hq_code varchar(4), @out_result var

我正在编写一个存储过程,在插入值之前需要检查一些约束

表中不应存在姓名、性别和总部代码的组合。我正在使用
选择1
进行此约束检查。如果组合不存在,则仅执行insert语句,如果组合已存在,则打印消息。请参见代码中的注释部分。但不能再继续下去了

create proc_set_ref_staff
    @name       varchar(50),
    @sex        varchar(1),
    @hq_code    varchar(4),
    @out_result varchar(500)   output

as
begin
    begin try

        select 1 from tbl_ref_staff where name = @name and sex = @sex and hq_code = @hq_code;
        --- if the combination exists set @out_result = 'already exists'

        --- how can I write if the above combination not exists then only execute insert statement
        --- insert into tbl_ref_staff values (@name, @sex, @hq_code)

    end try
    begin catch
        set @out_result = error_message();
    end catch;

end 

也许你看起来像那样

 IF NOT EXISTS( SELECT 1 FROM tbl_ref_staff WHERE name = @name AND sex = @sex AND hq_code = @hq_code;)
 BEGIN
 INSERT INTO tbl_ref_staff VALUES (@name, @sex, @hq_code)
 END

也许你看起来像那样

 IF NOT EXISTS( SELECT 1 FROM tbl_ref_staff WHERE name = @name AND sex = @sex AND hq_code = @hq_code;)
 BEGIN
 INSERT INTO tbl_ref_staff VALUES (@name, @sex, @hq_code)
 END

也许你看起来像那样

 IF NOT EXISTS( SELECT 1 FROM tbl_ref_staff WHERE name = @name AND sex = @sex AND hq_code = @hq_code;)
 BEGIN
 INSERT INTO tbl_ref_staff VALUES (@name, @sex, @hq_code)
 END

也许你看起来像那样

 IF NOT EXISTS( SELECT 1 FROM tbl_ref_staff WHERE name = @name AND sex = @sex AND hq_code = @hq_code;)
 BEGIN
 INSERT INTO tbl_ref_staff VALUES (@name, @sex, @hq_code)
 END
你可以用

if exists(select 1 from ...) 
begin 
...
end
或者可以使用语法

if (select count(1) from ..) > 0 
begin 
...
end    
你可以用

if exists(select 1 from ...) 
begin 
...
end
或者可以使用语法

if (select count(1) from ..) > 0 
begin 
...
end    
你可以用

if exists(select 1 from ...) 
begin 
...
end
或者可以使用语法

if (select count(1) from ..) > 0 
begin 
...
end    
你可以用

if exists(select 1 from ...) 
begin 
...
end
或者可以使用语法

if (select count(1) from ..) > 0 
begin 
...
end    

谢谢你的回复。如果值已经存在,如何打印消息
@out\u result='已存在'
。请您编辑相应的代码。谢谢回复。如果值已经存在,如何打印消息
@out\u result='已存在'
。请您编辑相应的代码。谢谢回复。如果值已经存在,如何打印消息
@out\u result='已存在'
。请您编辑相应的代码。谢谢回复。如果值已经存在,如何打印消息
@out\u result='已存在'
。请您编辑相应的代码。