Мы переносим MySQL на PostgreSQL. Я могу легко проверить схему и операторы SQL, используемые во всей (REALbasic) программе. Большая часть SQL состоит из построения строковых переменных.
Я уже знаю о необходимости заменить использование SELECT LAST_INSERT_ID()
столбцом SERIAL с ограничением UNIQUE.
Какие, если они есть, различия между ними, которые не явно видны в операторах SQL, могут нас укусить? Я ищу (возможно, тонкие) предположения о поведении, такие как любые различия в автофиксации, необходимость добавления ограничений, которых нет в MySQL и т. д.
Я пытаюсь найти какие-нибудь подводные камни для пары достаточно умных и внимательных парней, которые не являются гуру ни в одной из баз данных.
Это одностороннее обязательство, поэтому, если есть серьезные преимущества, которые мы получим, добавив новые декларации, я был бы признателен, если бы они указали на них.
Примечание: мы не используем какую-либо форму параметризованных запросов, и да, я указал на проблемы с инъекционными атаками как на обязательный аудит кода.
Да, для любопытных, это решение было вызвано проблемами с GPL, не то чтобы мы не хотели платить за лицензии, но, к сожалению, единственным НАСТОЯЩИМ базовым драйвером для MySQL была GPL. В мае 2009 года Real Software выпустила новый драйвер сообщества, который находится под лицензией GPL и включает исходный код. Обещали в ближайшем будущем драйвер Enterprise без лицензии GPL.
Я готов поверить, что ответ может быть таким: под кроватью нет невидимых монстров, но решил спросить, чтобы быть уверенным.