Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cee2dba

Browse files
authored
varchar, text, check
1 parent 8fc1302 commit cee2dba

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

‎functions/db_validation/TODO.md‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,17 @@
2727
1. `CREATE UNIQUE INDEX ON paid_services.snapshot_package_limit USING btree (order_item_id, service_id, sort(uniq(zone_ids)))`
2828
1. `CREATE UNIQUE INDEX ON paid_services.snapshot_package_limit USING btree (order_item_id, service_id, zone_ids)`
2929
1. Кроме ошибок нехватает рекоментаций, которые можно возвращать в результате работы функции валидации:
30-
1. Для текстовых колонок `TEXT (VARCHAR)` без ограничения длины и с отсутствием ограничения `check(...)` рекомендовать делать валидацию `check(length(col) between X and Y)`.
3130
1. Для колонок типа `json[b]` рекомендовать делать валидацию для верхнего уровня.
3231
1. CASCADE использовать в миграциях опасно.
3332
Удаление может рекурсивно пойти по FK и удалить существующие объекты БД и записи в таблицах.
3433
Рекомендовать выстроить цепочку удаления объектов в правильной последовательности.
3534
1. Типы колонок
35+
1. 🚨 Вместо устаревшего `CHAR(n) / VARCHAR(n)` нужно использовать `TEXT` с ограничением, например: `check(length(col) between 0 and 100)`
36+
1. 🚨 Для текстовых колонок `TEXT` и `VARCHAR` без ограничения длины и с отсутствием ограничения `check(...)` необходимо делать ограничение с валидацией `check(length(col) between X and Y)`
3637
1. Вместо устаревшего `TIMESTAMP` (WITHOUT TIME ZONE) нужно использовать `TIMESTAMPTZ` (TIMESTAMP WITH TIME ZONE)
37-
1. Вместо устаревшего `CHAR(n) / VARCHAR(n)` нужно использовать `TEXT (VARCHAR)`. To restrict length, just enforce `CHECK` constraint!
3838
1. Вместо проблемного `MONEY` нужно использовать `NUMERIC` and store currency in another column
3939
1. Вместо устаревшего `SERIAL` нужно использовать `[BIG]INT GENERATED`
4040
1. Вместо `JSON` рекомендовать использовать `JSONB`
41-
1. Запретить использовать колонку с типом `varchar`. Нужно использовать тип `text` с ограничением, например: `check(length(col) between 0 and 100)`
4241
1. В текстовое поле нельзя записать `null` или пустую строку на выбор (когда нет ни одного ограничения типа `check` на колонку), д.б. только 1 способ. Пример проблемной миграции: `alter table {table} add {column} varchar(10);`
4342
5. Для колонки `updated_at` (название задать в конфиге) должен быть триггер, который устанавливает значение `now()` при создании или обновлении записи
4443
6. Взять идеи из

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /