Проблема в том, что некоторые СУБД даже игнорируют самые простые стандарты (например, такие как символы цитирования или конкатенация строк).
Таким образом, следующее (100% ANSI SQL) не выполняется на каждой СУБД:
UPDATE some_table
SET some_column = some_column || '_more_data';
И я даже не думаю о более продвинутых стандартах SQL, таких как рекурсивные выражения общих таблиц (дажете, которые поддерживают его, не всегда соответствуют) или функции управления окнами (некоторые реализуют только очень узкое подмножество, некоторые не поддерживают все параметры).
Что касается DDL, существует проблема с типами данных.DATE
не везде одинаков, как и TIMESTAMP
.Не каждая СУБД имеет тип BOOLEAN
или TIME
.
Когда дело касается ограничений или доменов, вы получаете еще больше различий.
Итак, в двух словах: если вы действительно, действительно должны быть независимыми от СУБД, не беспокойтесь об этом.
Сказав все это: если у вас естьПри выборе между собственным и стандартным синтаксисом выберите стандартный синтаксис (OUTER JOIN
против (+)
или *=
, decode
против CASE
, nvl
против coalesce
и т. д.).