Мне нужна помощь в создании хранимой процедуры, которая будет использоваться для обработки случаев, когда пользователь может либо обновить существующие данные, либо вставить новые.
В частности, я работаю над приложением, которое является базовым 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
Я был бы очень признателен за помощь с этим.
Спасибо!