По умолчанию MySQL создает таблицы подсистемы myisam, которые не поддерживают транзакции или внешние ключи, вам необходимо явно принудительно использовать транзакционную подсистему innodb при создании таблицы.
По умолчанию MySQL принимает недопустимые данные, такие как дата '2010-02-30', молча обрезает слишком длинные текстовые данные, слишком большие числа и т. Д. Но вы можете изменить это для таблиц INNODB, используя SET sql_mode = 'STRICT_TRANS_TABLES';
в mysql 5.0.2 и вверх - см. «Ограничения на неверные данные» .
MySQL вообще не поддерживает проверочные ограничения, поэтому вы не можете, например:
- заставить целочисленные данные быть в некотором
диапазон;
- заставить текстовые данные иметь какой-либо формат (например, действительный адрес электронной почты)
адрес или действительный URL);
- ограничить текстовые данные допустимыми символами (только ASCII, только ISO-8859-1, только
цифры и минус и т. д.);
- Запрещать пробелы, переводы строки, двойные пробелы, пробелы в конце и т. Д.
или пустые текстовые данные.
Таким образом, вся проверка данных должна выполняться в клиентском приложении. Что труднее сделать и более подвержено ошибкам.
Все это не проблема в PostgreSQL.