Skip to content

Change grammar for multiple actions in ALTER TABLE

В данный момент, у нас валидно:

ALTER TABLE t ADD COLUMN IF NOT EXISTS e INT, f INT

Однако, в PostgreSQL (как наш основной референс) запрос будет выглядеть иначе:

ALTER TABLE t ADD COLUMN IF NOT EXISTS e INT, ADD COLUMN IF NOT EXISTS f INT

Мы нарушаем две вещи:

  1. не указываем явно опциональный IF (NOT) EXISTS (не только для ADD COLUMN, но и для остальных действий в ALTER TABLE) - это создает неоднозначность желания пользователя;
  2. ожидаем, что следующее действие будет идентично предыдущему. Например, если пользователь ввел ALTER TABLE t ADD COLUMN e INT, то дополнив этот запрос , f INT - мы ожидаем, что пользователь продолжит добавлять новые атрибуты, но никак не удалять их или переименовывать, например. PostgreSQL позвляет в одном запросе ALTER TABLE перечислять разные действия сколь угодно раз, а не одно и то же действие сколь угодно раз.
Edited by Kirill Bezuglyi
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information