Table:# result
Name Issues Years Value
Rani Critical 2018 0.90
Rani Critical 2018 0.00
Expected Output:-
Name Issues Year Value
Rani Critical 2018 0.90
Rani Critical 2018 0.00
Rani Null 2019 0.00
select Name=’Rani’,Issues=' Critical', years, ,Value from #result;
Insert #result (Name,years,Value) values(‘Rani’,year(getdate()),0)
Я хочу выполнить операцию вставки в таблицу #result только в том случае, если текущий год (например: -2019) Не существует. Если текущий год существует в таблице #result, операция вставки таблицы не должна выполняться.


Вы можете использовать IF NOT EXISTS для выполнения этой операции.
DECLARE @year INT = YEAR(GETDATE())
IF NOT EXISTS(SELECT 1 FROM #result WHERE Year = @year )
BEGIN
Insert #result (Name,years,Value) values(‘Rani’,@year,0)
END
это не потокобезопасно на уровне изоляции по умолчанию (и на любом уровне изоляции, если не в транзакции)
@MartinSmith, если мы используем временную таблицу, есть ли какие-то проблемы. Подскажите пожалуйста, что нужно исправить.
Хороший вопрос, так как это временная таблица с локальной областью видимости, это нормально. Никакой другой сеанс не может вставлять в него строки
Я не думаю, что GETDATE() имеет какое-либо отношение к этому вопросу, хотя по вопросу трудно сказать.
Что не так с решением в вопросе, связанном как дубликат?
@МартинСмит, спасибо. да. мы использовали временную таблицу в транзакциях без проблем, так как она привязана к сеансу.
Возможный дубликат Вставка SQL Server, если не существует лучшей практики. Вопрос для SQL Server, но ответ стандартный sql и применим и здесь.