그래서 내 앱 서버의 데이터베이스에 마지막으로 업데이트 된 시간을 추가하려고합니다. 아이디어는 업데이트가 우리 여행 중 하나에 적용되는 시간을 기록한 다음 앱이 정확한 최신 정보를 모두 가지고 있는지 파악하라는 요청을 보낼 수 있다는 것입니다.다른 테이블의 열을 업데이트하는 트리거를 만들려면 어떻게해야합니까?
필자의 테이블에 열을 추가하고 서비스를 제공했으며, 결국 여행 테이블에 여행이 변경 될 때마다 열을 업데이트하는 트리거를 얻을 수있었습니다. 내 문제는 이제 여행과 관련된 정보가 여러 다른 테이블에도 저장된다는 사실에서 비롯된 것입니다 (예를 들어 여행을 구성하는 경로 테이블과 사용자가 볼 수있는 사진이 있습니다). 여행 등) ... 그리고 해당 데이터가 변경되면 여행의 업데이트 시간도 변경해야합니다. 나는 내 삶에 대해 방아쇠를 설정하는 방법을 알아낼 수 없기 때문에 일부 노선 정보를 변경하면 경로가 속한 여행 (들)의 마지막 업데이트 시간이 테이블에 업데이트됩니다.
이것은 내 방아쇠 코드입니다. 여행의 행이 업데이트되면 여행 테이블의 마지막 업데이트 된 열을 업데이트합니다.
CREATE OR REPLACE FUNCTION record_update_time() RETURNS TRIGGER AS
$$
BEGIN
NEW.last_updated=now();
RETURN NEW;
END;
$$
LANGUAGE PLPGSQL;
CREATE TRIGGER update_entry_on_entry_change
BEFORE UPDATE ON mydatabase.trip FOR EACH ROW
EXECUTE PROCEDURE record_update_time();
--I used the next two queries just to test that the trigger works. It
--probably doesn't make a difference to you but I'll keep it here for reference
UPDATE mydatabase.trip
SET title='Sample New Title'
WHERE id = 2;
SELECT *
FROM mydatabase.trip
WHERE mydatabase.trip.id < 5;
외래 키가있는 여행 행을 참조하는 행이 업데이트 될 때 업데이트해야합니다. SQL보다 경험이 많은 사람의 아이디어는 나보다 뛰어 납니까?
그래, 내 동료들과 이야기하면서 우리는이 문제를 해결할 더 좋은 방법을 찾았다. 적용 가능한 모든 테이블에 업데이트 된 열을 추가하고 쿼리를 수행하는 것이었다. 답변 해주셔서 감사합니다! (mydatabase는 내가 스키마 이름을 대체하기 위해 사용했던 것으로, 분명히 바보입니다. 사용중인 실제 스키마 이름이 아닙니다.) – cbhedd