Обновить родительскую таблицу из дочерней таблицы с помощью SqlCommand - PullRequest
0 голосов
/ 11 июля 2020

У меня есть 2 таблицы:

  • WorkSchedule с 2 столбцами WorkScheduleID и WorkScheduleStatus
  • WorkShiftBid с 3 столбцами: WorkShiftBidID, WSBidStatus, WorkScheduleID (внешний ключ к таблице WorkSchedule)

Я хочу обновить таблицу WorkSchedule из таблицы WorkShiftBid. Это примерно так:

Я нажимаю кнопку на своем веб-сайте, он читает текущий WorkShiftBidID и обновляет WSBidStatus до «Утверждено».

Однако я хочу обновить WorkScheduleStatus и WSBidStatus в обеих таблицах до «Утверждено», где WorkScheduleID в обеих таблицах одинаково.

Я придумал этот запрос, но он не работает:

com.CommandText = "update WorkShiftBid b, WorkSchedule w" +
                  "set b.WSBidStatus ='Approved' and w.WorkScheduleStatus = 'Approved'" +
                  "where WorkShiftBidID = @id and w.WorkScheduleID = b.WorkScheduleID";
com.Parameters.AddWithValue("@id", id);

Как поменять чтоб работало?

1 Ответ

3 голосов
/ 11 июля 2020

Вы не можете обновить 2 таблицы с помощью одной команды обновления. Однако вы можете выполнить 2 обновления в одном пакете или отправить их как 2 пакета, если хотите:

com.CommandText = @"update WorkShiftBid
  set WSBidStatus ='Approved'
  where WorkShiftBidID = @id;

update w
  set WorkScheduleStatus = 'Approved'
from WorkSchedule w
  inner join WorkShiftBid b
     on w.WorkScheduleID = b.WorkScheduleID
  where WorkShiftBidID = @id";

com.Parameters.Add("@id", SqlDbType.Int).Value = id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...