10.6. Выходные столбцы SELECT
Правила, описанные в предыдущих разделах, распространяются на присваивание типов данных, кроме unknown
, во всех выражениях в запросах SQL, за исключением бестиповых буквальных значений, принимающих вид простых выходных столбцов команды SELECT
. Например, в запросе
SELECT 'Hello World';
ничто не говорит о том, какой тип должно принимать строковое буквальное значение. В этой ситуации PostgreSQL разрешит тип такого значения как text
.
Когда SELECT
является одной из ветвей конструкции UNION
(или INTERSECT
/EXCEPT
) или когда он находится внутри INSERT ... SELECT
, это правило не действует, так как более высокий приоритет имеют правила, описанные в предыдущих разделах. В первом случае тип бестипового буквального значения может быть получен из другой ветви UNION
, а во втором — из целевого столбца.
Списки RETURNING
в данном контексте воспринимаются так же, как выходные списки SELECT
.
Примечание
До PostgreSQL 10 этого правила не было и бестиповые буквальные значения в выходном списке SELECT
оставались с типом unknown
. Это имело различные негативные последствия, так что было решено это изменить.