Переносимый SQL, который работает в SQL Server, mySQL и postgreSQL - PullRequest
1 голос
/ 03 декабря 2009

Интересно, есть ли где-нибудь рекомендации по написанию кода SQL, который совместим с SQL Server, mySQL, а также с postgreSQL. Я пишу программу, и у пользователя есть выбор базы данных. Мне будет действительно трудно создавать отдельные запросы для каждой базы данных. Я не хочу использовать ORM или что-то подобное.

Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 03 декабря 2009

Что ж, лучший путь, который вы можете выбрать, состоит в принятии стандарта SQL ISO.

Postgres и MySQL являются активными сторонниками, но я не знаю, могли бы вы сказать то же самое о SQL Server.

Во всяком случае, я думаю, что решение ORM может быть лучшим для вас, потому что обычно они очень хорошо абстрагируют эти различия.

Но если вы не хотите его использовать, вы всегда можете хранить свои запросы в разных репозиториях, каждый для определенной базы данных, и загружать их во время выполнения.

1 голос
/ 03 декабря 2009

Следуйте стандартам SQL: 2003.

Выполнение модульных тестов при переносе кода из одной системы в другую.

Не используйте функции, не глядя, как они реализованы в DBMS и что они принимают в качестве параметров.

Вещи, на которые стоит обратить внимание: некоторые функции SUBSTRING основаны на 0 в одной системе и на 1 в другой. DATEDIFF работает по-другому тоже. Некоторые dbms имеют микросекунды для типа данных datetime, некоторые нет.

С учетом вышесказанного, писать действительно переносимый SQL - это мечта ... но действительно ли важно быть по-настоящему переносимым? Опытный администратор БД должен знать небольшие различия и быстро переносить SQL-коды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...