Правильное построение запроса в SQL Администрирование сервера для создания приложений-построителей - PullRequest
0 голосов
/ 20 июня 2020

Мне нужна помощь в создании хранимой процедуры, которая будет использоваться для обработки случаев, когда пользователь может либо обновить существующие данные, либо вставить новые.

В частности, я работаю над приложением, которое является базовым c конструктор форм и будет состоять из полей и текстовых полей. Пользователи могут добавлять в форму новые поля и текстовые поля или удалять их. Они также могут решить позже изменить текст существующего поля.

Вот то, что у меня есть. Что не работает так, как хотелось бы, и я понимаю, что проблема в том, что «нравится», но я не уверен, как правильно построить запрос.

С тем, что у меня есть, если поле названо Address1 и Address2, и пользователь хочет изменить поля на «Address» и «Address1», оба поля будут переименованы в «Address1».

Вот моя хранимая процедура в настоящее время:

IF NOT EXISTS (SELECT WidgetText FROM FormBuilderFormFields 
               WHERE FormId = @formid AND WidgetText LIKE @widgetText + '%')
BEGIN
    INSERT INTO FormBuilderFormFields (FormId, [Required], SortOrder, CreateDate, CreatedBy, WidgetId, WidgetText, WidgetVals, WidgetInputType)
    VALUES (@formid, @required, @sortOrder, @createDate, @uid, @widgetId, @widgetText, @widgetVals, @widgetInputType)           
END
ELSE
BEGIN
    UPDATE FormBuilderFormFields 
    SET [Required] = @required,
        SortOrder = @sortOrder,
        CreateDate = @createDate,
        CreatedBy = @uid,       
        WidgetId = @widgetId,
        WidgetText = @widgetText,
        WidgetVals = @widgetVals,
        WidgetInputType = @widgetInputType      
    WHERE   
        FieldId = (SELECT FieldId FROM FormBuilderFormFields 
                   WHERE WidgetText = (SELECT WidgetText 
                                       FROM FormBuilderFormFields 
                                       WHERE FormId = @formid 
                                         AND WidgetText LIKE @widgetText + '%'))-- AND FormId = @formid)
END

Я был бы очень признателен за помощь с этим.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...