Size: a a a

pgsql – PostgreSQL

2021 February 06

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
Oleg Kuzmenko
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
Вот тут большое исслеедование 🙈🙈🙈
https://stackoverflow.com/questions/15169410/how-do-you-do-date-math-that-ignores-the-year
источник

М

Махараджа in pgsql – PostgreSQL
вопрос не по бд, про питом можно спросить?
источник

М

Махараджа in pgsql – PostgreSQL
там ошибки в коде, исправить бы, но хз питон
источник

V

Vale Ra in pgsql – PostgreSQL
Vale Ra
Если в запросе на вставку есть подзапрос на чтение, будет ли  он выполнен, если таблица для основного запроса заблокирована на запись (другим запросом)?
Вопрос в том, начнется ли другая транзакция, если первая еще не завершилась? Транзакции не вложенные
источник

am

a m in pgsql – PostgreSQL
Vale Ra
Если в запросе на вставку есть подзапрос на чтение, будет ли  он выполнен, если таблица для основного запроса заблокирована на запись (другим запросом)?
Да, будет.
источник

am

a m in pgsql – PostgreSQL
Поэтому вам надо SELECT ... FOR UPDATE, а не вот это вот.
источник

am

a m in pgsql – PostgreSQL
Кроме того, строки блокируются на запись отдельно, а не вся таблица. Да еще и не все сразу. Это может добавить веселья во многих случаях.
источник

V

Vale Ra in pgsql – PostgreSQL
a m
Кроме того, строки блокируются на запись отдельно, а не вся таблица. Да еще и не все сразу. Это может добавить веселья во многих случаях.
Как это не все сразу?🤔
источник

am

a m in pgsql – PostgreSQL
Ну, вот так и живем.
Запускаешь одновременно SELECT ... ORDER BY id ASC FOR UPDATE и SELECT ... ORDER BY id DESC FOR UPDATE — и все валится со страшными словами про deadlock.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vale Ra
Если в запросе на вставку есть подзапрос на чтение, будет ли  он выполнен, если таблица для основного запроса заблокирована на запись (другим запросом)?
Запросы на запись не блокируют же таблицы целиком, и тем более не блокируют читателей... непонятно, о чём вопрос, в общем.

> Вопрос в том, начнется ли другая транзакция, если первая еще не завершилась?

А этот — тем более.
источник

MC

Malbolge Clark in pgsql – PostgreSQL
Ех, хорошо
Извините
источник

OK

Oleg Kuzmenko in pgsql – PostgreSQL
Спасибо большое. Реально вопрос оказался для меня интереснее, чем казалось исходно
источник

А

Александр in pgsql – PostgreSQL
Приветствую!
Есть запрос вида
select
 a
from
 rt_accrual a
join rt_contract_position cp on
 a.contract_position_id = cp.id
join rt_contragent_real_estate cre on
 cp.contragent_real_estate_id = cre.id
join rt_real_estate re on cre.real_estate_id = re.id
where a.delete_ts is null and cp.delete_ts is null and cre.delete_ts is null
В каждой таблице есть поле delete_ts
Есть ли способ сделать отбор сразу у нескольких таблиц по этому полю
Например, заменить строку
where a.delete_ts is null and cp.delete_ts is null and cre.delete_ts is null
на where *.delete_ts is null
источник

Y

Yaroslav in pgsql – PostgreSQL
Здравствуйте, я хотел бы удалить всё таблицы в pgAdmin, как мне это сделать?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Александр
Приветствую!
Есть запрос вида
select
 a
from
 rt_accrual a
join rt_contract_position cp on
 a.contract_position_id = cp.id
join rt_contragent_real_estate cre on
 cp.contragent_real_estate_id = cre.id
join rt_real_estate re on cre.real_estate_id = re.id
where a.delete_ts is null and cp.delete_ts is null and cre.delete_ts is null
В каждой таблице есть поле delete_ts
Есть ли способ сделать отбор сразу у нескольких таблиц по этому полю
Например, заменить строку
where a.delete_ts is null and cp.delete_ts is null and cre.delete_ts is null
на where *.delete_ts is null
Нет. Да и зачем?
источник

А

Александр in pgsql – PostgreSQL
Yaroslav Schekin
Нет. Да и зачем?
Иногда, вернее даже часто, приходится джойнить много таблиц, и каждый раз приходится подписывать [table].delete_ts is null
А если забыть добавить это условие, результат становится сильно не корректен(
источник

АА

Артур Асриян... in pgsql – PostgreSQL
Александр
Иногда, вернее даже часто, приходится джойнить много таблиц, и каждый раз приходится подписывать [table].delete_ts is null
А если забыть добавить это условие, результат становится сильно не корректен(
сделай вью сразу с фильтром и не придется каждый раз его писать. create view as select * from xxx whete delete_ts is null
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Александр
Иногда, вернее даже часто, приходится джойнить много таблиц, и каждый раз приходится подписывать [table].delete_ts is null
А если забыть добавить это условие, результат становится сильно не корректен(
Можно перенести его в ON, например (возможно, это нагляднее); или создать views (вроде rt_contract_position_actual) с "WHERE delete_ts IS NULL" и использовать только их; или привыкнуть всегда использовать аналогичные таким view-ам CTE; или как-то автоматизировать проверку кода таких запросов на наличие этих условий.
источник

D

Dmitriy in pgsql – PostgreSQL
Yaroslav
Здравствуйте, я хотел бы удалить всё таблицы в pgAdmin, как мне это сделать?
Может проще базу грохнуть и заново создать?
источник

А

Александр in pgsql – PostgreSQL
Yaroslav Schekin
Можно перенести его в ON, например (возможно, это нагляднее); или создать views (вроде rt_contract_position_actual) с "WHERE delete_ts IS NULL" и использовать только их; или привыкнуть всегда использовать аналогичные таким view-ам CTE; или как-то автоматизировать проверку кода таких запросов на наличие этих условий.
Да, спс. Создать view хороший вариант. Плохо только что, таблиц много( Но смысл есть насчет view подумать
источник