Which of the following is the correct syntax to create a row-level BEFORE INSERT trigger in PostgreSQL?
easy📝 Syntax Q3 of 15
PostgreSQL - Triggers in PostgreSQL
Which of the following is the correct syntax to create a row-level BEFORE INSERT trigger in PostgreSQL?
ACREATE TRIGGER trg BEFORE INSERT ON table_name EXECUTE FUNCTION func_name();
BCREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW EXECUTE PROCEDURE func_name();
CCREATE TRIGGER trg BEFORE INSERT ON table_name FOR EACH ROW EXECUTE FUNCTION func_name();
DCREATE TRIGGER trg BEFORE INSERT ON table_name FOR EACH STATEMENT EXECUTE FUNCTION func_name();
Step-by-Step Solution
Solution:
Step 1: Recall correct CREATE TRIGGER syntax
PostgreSQL requires specifying timing, event, table, row/statement level, and function call.
Step 2: Validate each option
CREATE TRIGGER trg BEFORE INSERT ON table_name EXECUTE FUNCTION func_name(); omits FOR EACH ROW (defaults to STATEMENT level); B uses AFTER and EXECUTE PROCEDURE (incorrect for triggers); D uses FOR EACH STATEMENT. Only C is correct for row-level BEFORE INSERT trigger.
Final Answer:
CREATE TRIGGER trg BEFORE INSERT ON table_name FOR EACH ROW EXECUTE FUNCTION func_name(); -> Option C
Quick Check:
BEFORE INSERT trigger syntax = CREATE TRIGGER trg BEFORE INSERT ON table_name FOR EACH ROW EXECUTE FUNCTION func_name(); [OK]
Quick Trick:Use FOR EACH ROW with BEFORE trigger and EXECUTE FUNCTION [OK]
Common Mistakes:
Using EXECUTE PROCEDURE instead of EXECUTE FUNCTION
Omitting FOR EACH ROW clause
Confusing AFTER with BEFORE timing
Master "Triggers in PostgreSQL" in PostgreSQL
9 interactive learning modes - each teaches the same concept differently