Введение в стандарты языка баз данных SQL


Несовместимости SQL/ и SQL/ - часть 2


В стандарте SQL/92 указываются еще некоторые виды несовместимости, но их формулировка слишком сложна, а сами они не слишком важны, чтобы упоминать о них в нашем курсе. С другой стороны, независимые авторы (в частности, К.Дейт) отмечают наличие некоторых дополнительных несовместимостей, не специфицированных в стандарте. Среди них следующие:

  1. Фактически, SQL/89 состоял из двух разных языков - языка модулей и языка определения схем. Операторы CREATETABLE, CREATEVIEW и GRANT могли появляться только как элементы внутри оператора CREATESCHEMA, и этот оператор в свою очередь был оператором языка определения схем; таким образом, CREATESCHEMA (и следовательно, CREATETABLE, CREATEVIEW и GRANT) не могли появляться внутри модуля. В попытке сохранить совместимость с этим достаточно странным обстоятельством, в стандарте SQL/92 многократно указывается, что оператор CREATESCHEMA мог бы не включаться в модуль; однако из описания языка не видно способа осуществить эту возможность.
  2. В SQL/89 привилегия REFERENCES требовалась только для возможных ключей, на которые ссылались некоторые внешние ключи. В SQL/92 это требуется для любого столбца, который встречается в некотором ограничении целостности.
  3. Стандарт SQL/89 допускает использование квалифицированных имен столбцов в разделе ORDERBY. SQL/92 этого не допускает. (На самом деле, это изменение лучше расценивать как исправление ошибки SQL/89, а не как несовместимость, поскольку в соответствии со спецификациями SQL/89 область видимости квалифицированного имени столбца не включала или, по крайней мере, не должна была включать раздел ORDERBY.)
  4. В соответствии со стандартом SQL/92 значением константы USER является текущий идентификатор авторизации. В SQL/89 значением USER должен являться идентификатор авторизации модуля.
  5. В SQL/89 квалификатором имени высшего уровня для (например) имен базовых таблиц был идентификатор авторизации. В SQL/92 это имя схемы, которое, в свою очередь, включает (возможно, неявное) имя каталога как другой (более высокого уровня) квалификатор.




- Начало -  - Назад -  - Вперед -