0
최근에 저는 portgres에서 파티션 테이블을 다루었습니다. INSERT RETURNING id
에 대한 몇 가지 문제점이 있습니다.INSERT RETURNING and partitioning POSTGRESSQL
CREATE OR REPLACE FUNCTION f_port_vessels_insert_trigger_auto()
RETURNS TRIGGER AS $$
DECLARE
insert_sql TEXT;
week_num INTEGER;
year_num INTEGER;
partition_table VARCHAR;
prefix_partition_table VARCHAR :='port_vessels_p_';
BEGIN
SELECT CAST (EXTRACT(WEEK FROM NEW.created_at) AS INTEGER) INTO week_num;
SELECT CAST (EXTRACT(YEAR FROM NEW.created_at) AS INTEGER) INTO year_num;
partition_table := prefix_partition_table || year_num || '_' || week_num;
insert_sql := 'INSERT INTO ' || partition_table || ' VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)';
EXECUTE insert_sql
USING NEW.id, NEW.port_id, NEW.vessel_id,
NEW.last_position_updated_at, NEW.nav_status_code,
NEW.created_at, NEW.updated_at, NEW.berth_id,
NEW.berth_shift_id;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER f_port_vessels_insert_trigger
BEFORE INSERT ON port_vessels
FOR EACH ROW EXECUTE PROCEDURE f_port_vessels_insert_trigger_auto();
내가 그들 모두를 구글 및 솔루션보기를 만들 참조 테이블 대신 트리거 insert instead on the view
을 만들어 : 이것은 내 트리거 기능과 트리거입니다. DB에서만 작업하는 것이 좋겠지 만 Active Record in Rails를 사용하면 훨씬 더 내 모델을 변경하고 싶지 않으므로 누구나이 상황을 경험할 수 있습니까? 아니면 이것을 해결할 또 다른 방법이 있습니다.