SQL Server Management Studio. Обновление T1 установило T1.Field1 = y, где T1.Field1 = x, будет ли это работать?

#sql #syntax #sql-update #ssms

#sql #синтаксис #sql-update #ssms

Вопрос:

 Update T1 set T1.Field1 = y where T1.Field1 = x
  

Будет ли этот синтаксис работать?

Я хочу обновить поле до значения 40, где это поле в настоящее время равно 50. Это обновило бы несколько строк при первом запуске.

Я хотел бы надеяться, что это обновит нулевые строки при попытке запустить его во второй раз.

Комментарии:

1. Да, это должно сработать

2. … и это обновит 0 строк при последующих исполнениях.

3. Обратите внимание, что в таблицах есть столбцы , а не поля.

4. Имейте в виду, что обновления, затрагивающие 0 строк, все еще интересны . Потому что, например, они все равно будут вызывать срабатывание триггеров.

5. поле — это пересечение строки и столбца, если таблица содержит 10 строк и 10 столбцов, то в ней содержится 100 полей

Ответ №1:

Если я изложу это простыми словами

 Update T1 set T1.Field1 = y where T1.Field1 = x

Update T1 set T1.Field1 = 40 where T1.Field1 = 50
  

Сначала, когда ваша таблица имеет значение 50 для field1 и все эти значения будут обновлены как 40 при запуске инструкции update .

При повторном запуске теперь столбец Field1 уже обновлен как 40, и это больше не 50, поэтому ничего не изменится, поскольку инструкция update обновляет только 50 как 40.