Хотел написать комментарий к странице http://postgresql.ru.net/manual/sql-dropdomain.html, но почему-то не пускают.
Вот, собственно, что вызывает недоумение:
CASCADE
Automatically drop objects that depend on the domain (such as table columns).
и
This command conforms to the SQL standard
Стандарт говорит, что при каскадной операции удаления домена спецификации домена опускаются на уровень столбца, определенного на этом домене. Т.е. столбец, естественно, не должен быть удален, и такое поведение явно нарушает стандарт и представляет собой потенциальную угрозу потери данных.
Побочным эффектом является еще одно нарушение стандарта, который утверждает, что нельзя удалить единственный (последний) столбец в таблице. Т.е. нет таблицы без столбцов, а для удаления таблицы есть соответствующая команда - DROP TABLE. Так вот, посредством каскадного удаления доменов можно удалить все столбцы таблицы.
Проверьте последствия этого!
Комментарии
Сергей, если вы
Сергей, если вы нашли ошибку в документации или в продукте, очень бы желательно эту ошибку запостить разработчикам!
http://postgresql.ru.net/manual/bug-reporting.html
Это, действительно, важно. Поверьте, там тоже не боги горшки обжигают! Если есть проблема, то надо о ней кричать как можно громче, чтобы её исправили! Если не будут реагировать на ваш баг-репорт (хотя должны), можно наших девелоперов подключить будет, обратится к ним напрямую!
2 admin
Я еще плохо ориентируюсь здесь, т.к. только начинаю работать с PostgreSQL.
Что касается бага, то, поискав в гугле, нарыл такую ссылку:
http://osdir.com/ml/db.postgresql.bugs/2002-09/msg00261.html
Т.е. проблема известна, хотя там и не говорится о нестандартном поведении. С другой стороны, соответствовать ли стандарту - это дело разработчиков. Единственно, не нужно в официальной документации заявлять о соответствии.
www.sql-ex.ru
Вы не совсем
Вы не совсем правы. Раз в документации заявлено о том, что PostgreSQL стремится соответствовать стандарту, то поведение должно быть приведено в соответствие с этим стандратом. Да бывают случаи, когда в силу каких-либо причин PostgreSQL нарушает стандарт. Однако, в этом случае в документации должно быть сделано замечание об этом! Так что с какой стороны не посмотреть - это баг. Либо в реализации, либо в документации.
Как тут все не просто..
Как тут все не просто..