Как обновить таблицу Bridge в SQL Server?
У меня три стола tblSubject
, tblSubjectGroup
а также tblSubjectGroupDetails
,
tblSubject
Таблица имеет следующие столбцы:
subId (PK, char(36), not null)
subName (varchar(50), not null)
tblSubjectGroup
Таблица имеет следующие столбцы:
subGroupId (PK, char(36), not null)
subGroupName (varchar(50), not null)
tblSubjectGroupDetails
является таблицей мостов между вышеупомянутыми таблицами, которые имеют отношение многие ко многим:
subGroupId (FK, char(36), not null)
subId (FK, char(36), not null)
Я поместил следующие фиктивные данные в эти таблицы:
tblSubject:
Английский язык, математика, физика, химия, наука, биология, экономика, география, история
tblSubjectGroup:
Группа1, группа2, группа3
Group1
связан сEnglish, Mathematics and Biology
Group2
связан сGeography, History and Economics
Group3
связан сPhysics, Chemistry and Science
Здесь я хочу обновить Group2
с этими предметами: Geography, History, Science.
(Вставка и удаление подходят для меня, но я не могу понять, как обновить таблицу мостов)
UPDATE tblSubjectGroupDetails
SET subId = '......'
WHERE subGroupId = '......'
Вышеупомянутое утверждение изменит все предметы определенной предметной группы. Я хочу изменить только экономику на науку для группы2.
Кстати, я забыл упомянуть, что tblSubjectGroupDetails
имеет составной первичный ключ.
Как я могу сделать это в SQL Server?
1 ответ
Я хочу изменить только экономику на науку для группы2.
Вам нужно другое условие в предложении where, например:
UPDATE tblSubjectGroupDetails SET subId = science_id
WHERE subGroupId = group_2_id
and subId = economics_id;
Просто замените идентификаторы на правильные значения.
Конечно, это не сработает (приведет к нарушению ограничения первичного ключа), если в вашей Group2 уже есть запись темы Science в этой таблице.