ли создать такой констреинт, который проверял бы значение из джейсона, что оно ссылается на существующий элемент в другой таблице? конкретно, национальность человека -- двухбуквенный код страны. хочется сохранять это атрибутом в джейсоне, но чтобы код был валидным
Можно триггером проверять, но не факт, что это хорошый вариант. (Хорошый -- выдрать это в какого-то рода автоматическое поле и повесить классический fk). Просто в документацыи нерекомендовано проверять любые виды check по базе -- поскольку это всё требует нетривиальных проверок для сохранения идемпотентности базы. Есть вот встроенные foreighn keys, которые делают именно это -- то есть проверяют свои значения по базе. Но посмотрите, какая там обвязка, не просто два комплекта триггеров -- но и синтаксические изменения языка SQL и поддержка в операторах обновления/удаления. И это работает хорошо. Да и то... К pg_dump бывают вопросы. Самопальный оператор проверки -- довольно прост, но очень стрёмен.
триггер на апдейт, инсерт -- хотелось избежать. можно ли делать фк на GENERATED ALWAYS ?
фобия в том, что базу хочется иметь относительно универсальной, чтобы перенос в тот же SQL Server был менее болезненным
Кринж вроде проверок json неспособствует этому сам по себе, триггеры или fk на generated -- это ужэ мелочи. (Ну да, SQL везде разные, что поделать).
даже джейсон в скл можно относительно единообразным иметь. особенно, когда придёт таки 15й пг
а что там добавили кроме merge?
https://postgrespro.com/blog/pgsql/5969433
https://www.depesz.com/2022/03/31/waiting-for-postgresql-15-sql-json-constructors/
кроме говнобаннера ничего нет по ссылке
Обсуждают сегодня