Как обновить таблицу 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 в этой таблице.

Другие вопросы по тегам