ahmed_sa Ответов: 1

Как установить статус конфликта, когда существует один и тот же идентификатор ?


шаги для достижения этой цели

1 - сделать соответствующие разделы части существуют на временную таблицу #Temp, которая имеет тот же идентификатор в масках из временной таблицы #детали
в этом случае результатом будет
PartId  MaskId   ChemicalId
200     1000     901
500     1700     909
600     1700     909

2 - проверить на временную таблицу #химические для partid или часть идентификатора же maskId



если chemicalid на шаге 1 то же самое chemicalid на таблице temp chemical
затем статус будет обновлен до конфликта на основе идентификатора детали .

Вот уже 200 901 химической ID на временную таблицу #Temp и химической временной таблицы у 901 за 100
тогда статус будет конфликтным, потому что он связан с одним и тем же идентификатором маски и имеет один и тот же химический идентификатор 901 .


Подробности

create table #temp
(
partid     int,
maskid     int,
chemicalid int,
status  nvarchar(50)
)
insert into #temp
values
(100,1000,901,null),
(700,1700,909,null)

create table  #parts
(
PartId  int,
maskId  int
)
   
insert into #parts (PartId,maskId)
values
(100,1000),
(200,1000),
(500,1700),
(600,1700),
(700,1700)


create table  #Chemical
(
Chemicalmasterid  int,
ChemicalId  int,
PartId   int
)                        
insert into  #Chemical(Chemicalmasterid,ChemicalId,PartId)
values
(1 ,901,100),
(7 ,920,700)
final result
100     1000 901 conflict chemical id
700     1700 909     null


Что я уже пробовал:

update t set status ='conflict chemical id' from #temp t

Wendelius

Не могли бы вы еще раз проверить описание проблемы. Например, результирующие данные на шаге 1. Откуда вы знаете, что partid 200 имеет checmicalid 901?

1 Ответов

Рейтинг:
2

RickZeeland

Вы можете сделать это с помощью триггера, видите: Учебник по триггерам SQL Server[^]