72 похожих чатов

Подскажите, как заполнять автоматом time_end, которая собирается из time_start +

duration из perfomances?

На уме только триггер, но мб что-то еще есть?

(по таблицам вопросы не задавать, работа для универа)

26 ответов

6 просмотров
Vadim- Автор вопроса

Еще вопрос возникает, как можно упростить это? create trigger ed_session after insert on sessions for each row execute procedure create_end_time_session(); === create function create_end_time_session() returns trigger language plpgsql as $$ DECLARE tmstmp timestamp with time zone; dur interval; BEGIN SELECT sessions.time_start, p.duration INTO tmstmp, dur FROM sessions JOIN performances p ON p.id = sessions.performance_id WHERE sessions.id = NEW.id; UPDATE sessions SET time_end = (tmstmp + dur) WHERE id = NEW.id; RETURN NEW; END; $$; alter function create_end_time_session() owner to user_lab1; Триггеры пару раз создавал.

Ну это не нужно вообще

Vadim- Автор вопроса
Ilya Zviagin
Ну это не нужно вообще

старому преподу не доказать, у него своего мировоззрение

Ну так триггер делай

Vadim
Еще вопрос возникает, как можно упростить это? cr...

Подзапросом внутри update можно сделать

Vadim- Автор вопроса
Ilya Zviagin
Подзапросом внутри update можно сделать

UPDATE sessions s SET time_end = s.time_start + p.duration FROM sessions b LEFT JOIN performances p on b.performance_id = p.id WHERE s.id = 2; типо того?

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

Да, но тут должен быть inner join

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

Ну и это не подзапрос, хотя так тоже можно,

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

Уточни в доках PG про синтаксис и семантику многотабличных update

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

Вот тут у тебя две таблицы session, могут быть проблемы

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

UPDATE sessions s SET time_end = s.time_start + p.duration FROM sessions s LEFT JOIN performances p on s.performance_id = p.id WHERE s.id = 2;

Vadim- Автор вопроса
Ilya Zviagin
UPDATE sessions s SET time_end = s.time_start + p....

[2021-10-01 07:01:15] [42712] ОШИБКА: имя таблицы "s" указано больше одного раза

Vadim
UPDATE sessions s SET time_end = s.time_start + p....

А еще проще так UPDATE sessions s SET time_end = s.time_start + (select p.duration FROM performances p where s.performance_id = p.id )

Vadim
[2021-10-01 07:01:15] [42712] ОШИБКА: имя таблицы ...

Тут потому что вопрос s и b - это одна и та же таблица или разные?

Vadim- Автор вопроса
Vadim- Автор вопроса
Vadim
это одна и та же таблица, sessions

Это твое намерение такое, а по сути это две разные таблицы в запросе

Vadim
старому преподу не доказать, у него своего мировоз...

Старый препод оценит, если ты предложишь ему создать view

Vadim- Автор вопроса
Vadim
Еще вопрос возникает, как можно упростить это? cr...

Если sessions.id — это первичный ключ, то во-первых надо делать before insert и менять new, а не долбить таблицу два раза, а во-вторых — выборка из sessions вообще безсмысленна, у тебя всё в new есть.

Vadim- Автор вопроса
Ilya Anfimov
Если sessions.id — это первичный ключ, то во-первы...

Отредачено до https://t.me/dba_ru/141885 Где прекреплен where id = NEW.id

Vadim
Отредачено до https://t.me/dba_ru/141885 Где прекр...

Тогда хотя бы where time_end is null добавьте Вообще, это сильно разные задачи — раскатать такое запросом и повесить триггер.

Похожие вопросы

Обсуждают сегодня

Всем привет! Может кто поможет разобраться с чёрной магией? (во всяком случае для меня) Дело вот в чём - написал я код для общения с tmc2209 драйвером по half duplex uart. М...
pronvis
4
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Друзья, за кем?
Magic
12
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
ого, спасибо Никит, ты как всегда кладезь нужной инфы! Сейчас пойду копаться, а мне релиз создать как и версию самого плагина? типа 1.0.8?
Alex Blaze
6
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
кто мешает подписать все соответствующие документы? мы открыты
Mary🍋
5
Погодь, а как ты переопределяешь функцию в хедере? Эрланг это же не С, тут явный вызов макросов
Maksim Lapshin
6
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
а вот скажем условно стоит задача научить автоматически ехать по дороге машину в гта распознавать линии полосы +- понятно как, но как определять сторону движения?
Дурачок Глупый
5
Карта сайта