У меня есть код ниже, чтобы проверить, нет ли записи, вставить и вернуть идентификатор. Но также, если запись существует, она возвращает значение. Какое изменение следует внести в C# и SQL-часть для этого? База данных - это сервер sQL. Должен ли я использовать ExecuteScalar() для этого?Идентификатор возврата, если запись существует, иначе Вставка и возврат ID
con.Open();
// Insert ClinRefFileTypeMaster
string command1 = string.Format(
"if NOT exists (select * from [ClinRefFileTypeMaster] where [ClinRefTypeName] = '{0}') Insert into [ClinRefFileTypeMaster] ([ClinRefTypeName]) output INSERTED.[ClinRefTypeID] VALUES('{0}')",
dataToParse[i][0]
);
SqlCommand ClinRefFileTypeMaster = new SqlCommand(command1, con);
// check if there is an value
object checkValue = ClinRefFileTypeMaster.ExecuteScalar();
if (checkValue != null)
ClinRefFileTypeId = (int)checkValue;
Возможно вам нужен оператор MERGE – Steve
Возможно, разбить операторы. Вставьте только в if-блок. выберите внешний вид. SQL довольно хорош с кэшированием, если вы только что вставили что-то, это, вероятно, будет очень быстро. Кроме того, запрос трудно прочитать, пожалуйста, сделайте многострочную строку, запустив ее с помощью @. – MrFox
Этот взгляд [Little Bobby Tables] (http://bobby-tables.com/) не знает. –