Добавить в корзинуПозвонить
Найти в Дзене
"Мы"-Прогер

Значения по умолчанию в SQL - Учим SQL на примере Postgres

Пусть у нас есть таблица учеников. Столбец id служит для различения строк между собой, то есть, является первичным ключом. Поэтому она всегда должна быть заполнена (то есть, значения null в ней запрещены). Если мы попытаемся добавить к таблице новую строчку, не заполнив id, то получим ошибку: "null value in column "id" of relation "students" violates not-null constraint" ("значение null в колонке "id" отношения "students" нарушает ограничение not-null"). Чтобы вставить новую строчку, нужно заполнить id. Для этого нужно сгенерировать id либо в интернете, либо в приложении, которое пользуется базой данных. Однако это может быть неудобно. Поэтому есть возможность заставить базу данных генерировать id самостоятельно. Для этого нужно задать значение по умолчанию - значение, которое будет вставляться в данный столбец автоматически, если при вставке не было указано явное значение. Найдём таблицу во вкладке Database и нажмём на неё правой кнопкой, выберем "Modify Table...". В открывшемся окне
Оглавление

Зачем нужны значения по умолчанию

Пусть у нас есть таблица учеников. Столбец id служит для различения строк между собой, то есть, является первичным ключом. Поэтому она всегда должна быть заполнена (то есть, значения null в ней запрещены). Если мы попытаемся добавить к таблице новую строчку, не заполнив id, то получим ошибку:

"null value in column "id" of relation "students" violates not-null constraint" ("значение null в колонке "id" отношения "students" нарушает ограничение not-null").

Чтобы вставить новую строчку, нужно заполнить id. Для этого нужно сгенерировать id либо в интернете, либо в приложении, которое пользуется базой данных. Однако это может быть неудобно.

Поэтому есть возможность заставить базу данных генерировать id самостоятельно. Для этого нужно задать значение по умолчанию - значение, которое будет вставляться в данный столбец автоматически, если при вставке не было указано явное значение.

Как задать значение по умолчанию в IntelliJ IDEA / PyCharm / Rider

Найдём таблицу во вкладке Database и нажмём на неё правой кнопкой, выберем "Modify Table...". В открывшемся окне выберем столбец id и зададим ему значение "gen_random_uuid()":

-2

Это не какое-то определённое значение. Функция "gen_random_uuid()" каждый раз генерирует новый случайный id. Подробнее функции мы изучим в последующих статьях.

У меня при повторных попытках вставить строку с id = null продолжала выскакивать ошибка, потому что Rider не изменил ранее сгенерированный им SQL. В этом SQL явно было указано, что в колонку id нужно вставить значение null. А значения по умолчанию работают только если в SQL не указано никакое значение. Чтобы исправить это, я обновил таблицу, отказавшись от изменений, и попытался вставить строку заново:

-3

Теперь всё заработало - сгенерировался случайный id:

-4

Другой пример

Добавим в таблицу столбец, который будет показывать, была ли удалена строчка. Это часто применяемый на практике трюк: вместо физического удаления данные просто помечаются как удалённые, чтобы в случае чего можно было их прочитать. Новый столбец будет хранить одно из двух значений: удалено / не удалено, то есть, он будет иметь логический тип данных boolean. Значение true (истина) будет означать, что строка удалена, а false (ложь) - что нет. Значение null (неизвестно) не имеет смысла, поэтому на столбец можно навесить ограничение not null. Назовём столбец "is_deleted". Когда создаётся новая строка, то, конечно, она ещё не удалена. Поэтому логично использовать true как значение по умолчанию. Создайте этот столбец самостоятельно.

Далее

В следующей статье мы научимся писать и выполнять SQL-команды:

Оглавление: