Мне нужно обновить таблицу и установить для столбца (включенного) значение 1 со следующими правилами
- Должна быть 1 (и никогда не 0 или> 1) запись с включенным значением 1 для каждогоEmployee_Guid.
- Следует выбрать удаленную запись, равную 0 (должна быть только одна запись или нет записей с удаленными, равными 0 для Employee_Guid), чтобы установить включенным значение 1.
- Если всезаписи удалили, установив в 1, следует использовать запись с самым последним Create_Date_Time
- Если есть связь с датой создания времени, любая запись группы связывания может быть установлена в 1, но только одна из них может бытьused.
Если существует более 1 записи с удаленным значением 0, я хотел бы выдать ошибку, поскольку это недопустимое состояние.
Вот то, что у меня есть до сих пор
if(exists(select count(employee_guid) from Employees_M where deleted = 0 group by employee_guid having count(employee_guid) > 1))
RAISERROR('More than one record has deleted set to 0')
Update Employees_M set [ENABLE] = 0
select * into #t from employees_m where deleted = 0
insert into #t select * from employees_m where employee_guid not in (select employee_guid from #t)
and --fulfill rules 3 and 4
Update Employees_M set [ENABLE] = 1
where pk_guid in (select pk_guid from #t)
Вот структура таблицы
PK_Guid (primary key, uniuque, uniuqueidenitfier, not null)
Employee_Guid (uniuqueidenitfier, not null)
Deleted (bit, not null)
Enable (bit, not null)
Create_Date_Time (datetime defaults to getdate(), not null)
Это не просто вопрос "Покажи мне код".Я хочу научиться делать это правильно, так что ссылки или примеры, которые похожи, но не решают проблему, также будут оценены.