2016-02-10 6 views
1

У меня есть таблица, какКак реализовать эту логику If-Else в транзакции T-SQL?

CREATE TABLE FinishedMappings ( 
    partner_id UNIQUEIDENTIFIER, 
    survey_id INT, 
    PRIMARY KEY (partner_id,survey_id), 
    FOREIGN KEY (partner_id) REFERENCES Partners(id), 
    FOREIGN KEY (survey_id) REFERENCES Surveys(id) 
); 

который должен отслеживать людей, которые взяли обследование. Если человек X не взял опрос Y, то partner_id=X,survey_id=Y комбо нет в этой таблице. Я создаю хранимую процедуру, которая обновляется на основе новой информации о том, сделал ли человек конкретный опрос. Как я начал писать это

CREATE PROCEDURE UpdateFinishValue (@partner_id UNIQUEIDENTIFIER, 
            @survey_id INT, 
            @finished TINYINT) 
AS 
    IF [finished is equal to 1 and the @partner_id,@survey_id pair isnt in the FinishedMappings db] 
     INSERT INTO FinishedMappings (partner_id,survey_id) VALUES (survey_id,partner_id) 
    ELSE 
     DELETE FROM FinishedMappings WHERE [email protected]_id AND [email protected]_id 
GO 

, но я не уверен, как реализовать

[finished is equal to 1 and the @partner_id,@survey_id pair isnt in the FinishedMappings db] 

часть или если есть более компактный способ написания этого в целом. Любая помощь?

ответ

1

Что-то вроде этого:

if (@finished = 1 and 
    not exists (select 1 
       from FinishedMappings fm 
       where fm.partner_id = @parner_id and fm.survey_id = @survey_id 
       ) 
    ) 
begin 
    . . . 
end; 
+0

ли 'затем' необходимо? –

+1

@SubparWebDev. , , Нет, это даже не синтаксически правильно. Но я * думаю * «тогда» при написании такой логики;) –

Смежные вопросы