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

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

duration из perfomances?

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

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

26 ответов

32 просмотра
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 добавьте Вообще, это сильно разные задачи — раскатать такое запросом и повесить триггер.

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта