Postgres: как заполняется значение по умолчанию? - PullRequest
0 голосов
/ 30 января 2019

Чтобы было ясно, я хочу знать, какой механизм используется для заполнения значения по умолчанию, а не синтаксиса SQL, необходимого для создания ограничения значения по умолчанию для таблицы.

Использует ли Postgres какой-то видтриггер, который обновляет значение по умолчанию, если оно отсутствует или что-то еще?Я не смог найти объяснения на официальном сайте .

1 Ответ

0 голосов
/ 31 января 2019

Это происходит в функции rewriteTargetListIU в src/backend/rewrite/rewriteHandler.c.Комментарий говорит сам за себя:

/*
 * rewriteTargetListIU - rewrite INSERT/UPDATE targetlist into standard form
 *
 * This has the following responsibilities:
 *
 * 1. For an INSERT, add tlist entries to compute default values for any
 * attributes that have defaults and are not assigned to in the given tlist.
 * (We do not insert anything for default-less attributes, however.  The
 * planner will later insert NULLs for them, but there's no reason to slow
 * down rewriter processing with extra tlist nodes.)  Also, for both INSERT
 * and UPDATE, replace explicit DEFAULT specifications with column default
 * expressions.

Так что это происходит во время перезаписи запроса , который является шагом между синтаксическим анализом строки SQL и ее оптимизацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...