Sync Data Between Tables Using a Trigger Procedure
Data Synchronization Trigger using Stored Procedure
Write a PostgreSQL query to create a trigger that calls a stored procedure to synchronize data between two related tables upon update.
Solution:
-- Create or replace a function named sync_data
CREATE OR REPLACE FUNCTION sync_data() RETURNS TRIGGER AS $$
BEGIN
-- Update the secondary_table to synchronize data with primary_table
UPDATE secondary_table
SET column_value = NEW.column_value
WHERE secondary_table.ref_id = NEW.id;
-- Return the new row after the update
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Create a trigger named trg_sync_data
CREATE TRIGGER trg_sync_data
-- Set the trigger to execute after updating a row in the primary_table
AFTER UPDATE ON primary_table
-- Apply the trigger to each updated row
FOR EACH ROW EXECUTE FUNCTION sync_data();
Explanation:
- Purpose of the Query:
- The goal is to keep data in a secondary table synchronized with updates made in a primary table.
- This demonstrates using a stored procedure to propagate changes between tables.
- Key Components:
- The stored procedure performs an UPDATE on the secondary_table based on the NEW values from primary_table.
- The trigger is defined to fire after an update on the primary_table.
- Real-World Application:
- Useful in scenarios where data redundancy exists and synchronization is necessary.
Notes:
- Ensure that the secondary_table has a foreign key reference to the primary_table.
- Trigger execution should be optimized for performance.
For more Practice: Solve these Related Problems:
- Write a PostgreSQL query to create a trigger that synchronizes new inserts from a primary table to a backup table in real time.
- Write a PostgreSQL query to create a trigger that updates corresponding rows in a secondary table with conflict resolution on duplicate keys.
- Write a PostgreSQL query to create a trigger that keeps timestamp columns in two related tables in sync upon each update.
- Write a PostgreSQL query to create a trigger that synchronizes data between tables only when a record passes a specific validation check.
Go to:
- Comprehensive Guide to Using Triggers with Stored Procedures in PostgreSQL Exercises Home. ↩
- PostgreSQL Exercises Home ↩
PREV : Conditional Trigger Execution using Stored Procedure.
NEXT : Data Validation Trigger using Stored Procedure.
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
