#sql #postgresql #sql-update
#sql #postgresql #sql-обновление
Вопрос:
Я пытаюсь установить значения столбцов, например area
, затем использовать это area
значение столбца, например, в следующем наборе area * somecolumn
. Когда я это делаю, кажется, что area
это еще не установлено. Нужно ли мне что-то делать, чтобы postgres регистрировал / понимал / фиксировал для работы следующего оператора set? Или это должно работать?
update table1 t1
set
area = something;
--update/commit/save edits/?
update table1 t1
set
volume = area * col1 #I belive area hasnt been set yet so volume become NULL. But when I look at the table afterwards, area has a value
and many more...
Ответ №1:
Ваши запросы должны делать то, что вы намереваетесь, предоставлять это «что-то» и col1
нет null
.
Однако вы можете легко делать то, что хотите, с помощью одного оператора:
update table1 t1
set area = $1, volume = $1 * col1
Комментарии:
1. Хорошо, тогда я, должно быть, делаю что-то еще неправильно, я постараюсь выяснить. Что такое знак доллара для / вызывается?
2. @BERA: это параметр привязки, который представляет значение, которое вы хотите передать в запрос (вы назвали это «что-то» в своем вопросе).
3. Знак доллара используется для ссылки на входные параметры в их соответствующем порядке.
4. @БЕРА: Я понимаю. Это называется целочисленным делением. Примечание: я бы рекомендовал использовать точный тип данных (
numeric
,decimal
), а неreal
, что является неточным.5. @БЕРА: да. Если существует один числовой операнд, вся операция выполняется в числовом контексте.