Bird
Raised Fist0
SQLquery~5 mins

Trigger for audit logging in SQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of a trigger in audit logging?
A trigger automatically records changes made to a table, such as inserts, updates, or deletes, to keep an audit trail of data modifications.
Click to reveal answer
beginner
Which SQL event types can a trigger listen to for audit logging?
Triggers can listen to INSERT, UPDATE, and DELETE events to capture changes for audit logging.
Click to reveal answer
intermediate
What is a common structure of an audit log table?
An audit log table usually contains columns like action_type (INSERT/UPDATE/DELETE), changed_by (user), changed_at (timestamp), and old/new values of the data.
Click to reveal answer
intermediate
How does a BEFORE trigger differ from an AFTER trigger in audit logging?
A BEFORE trigger runs before the data change happens, allowing validation or modification; an AFTER trigger runs after the change, ideal for recording the final state in audit logs.
Click to reveal answer
beginner
Why is audit logging important in databases?
Audit logging helps track who changed what and when, supporting security, compliance, and troubleshooting by providing a history of data changes.
Click to reveal answer
Which SQL trigger event is NOT typically used for audit logging?
ASELECT
BUPDATE
CDELETE
DINSERT
What information is essential to store in an audit log table?
AUser who made the change
BTimestamp of the change
CType of action performed
DAll of the above
When should an AFTER trigger be used for audit logging?
ATo validate data before change
BTo record the final state after data change
CTo prevent data changes
DTo modify data before insertion
Which SQL statement creates a trigger for audit logging?
ACREATE TRIGGER
BCREATE PROCEDURE
CCREATE FUNCTION
DCREATE VIEW
What is a risk of not having audit logging in a database?
AEasier data recovery
BImproved database performance
CData changes cannot be tracked
DAutomatic backups
Explain how a trigger can be used to implement audit logging in a database.
Think about what happens when data changes and how to capture that automatically.
You got /4 concepts.
    Describe the key columns you would include in an audit log table and why.
    Consider what information helps track who did what and when.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a trigger used for audit logging in SQL?
      easy
      A. To automatically record changes made to data in a table
      B. To speed up query execution on large tables
      C. To create backups of the database periodically
      D. To enforce user permissions on tables

      Solution

      1. Step 1: Understand what audit logging means

        Audit logging means keeping a record of changes made to data, such as who changed it and when.
      2. Step 2: Identify the role of triggers in audit logging

        Triggers automatically run when data changes and can insert records into an audit table to log these changes.
      3. Final Answer:

        To automatically record changes made to data in a table -> Option A
      4. Quick Check:

        Audit logging = record data changes automatically [OK]
      Hint: Triggers run automatically on data changes for logging [OK]
      Common Mistakes:
      • Thinking triggers speed up queries
      • Confusing audit logging with backups
      • Believing triggers manage user permissions
      2. Which of the following is the correct syntax to create a trigger that fires after an INSERT on a table named employees?
      easy
      A. CREATE TRIGGER trg AFTER INSERT ON employees FOR EACH ROW BEGIN ... END;
      B. CREATE TRIGGER trg BEFORE UPDATE ON employees FOR EACH ROW BEGIN ... END;
      C. CREATE TRIGGER trg AFTER DELETE ON employees FOR EACH ROW BEGIN ... END;
      D. CREATE TRIGGER trg ON employees AFTER INSERT BEGIN ... END;

      Solution

      1. Step 1: Identify correct trigger timing and event

        The question asks for a trigger after INSERT, so it must say AFTER INSERT.
      2. Step 2: Check syntax correctness

        CREATE TRIGGER trg AFTER INSERT ON employees FOR EACH ROW BEGIN ... END; uses correct syntax: CREATE TRIGGER name AFTER INSERT ON table FOR EACH ROW BEGIN ... END;
      3. Final Answer:

        CREATE TRIGGER trg AFTER INSERT ON employees FOR EACH ROW BEGIN ... END; -> Option A
      4. Quick Check:

        Trigger syntax = CREATE TRIGGER ... AFTER INSERT ON ... [OK]
      Hint: Use AFTER INSERT ON table FOR EACH ROW for insert triggers [OK]
      Common Mistakes:
      • Using BEFORE UPDATE instead of AFTER INSERT
      • Omitting FOR EACH ROW clause
      • Wrong trigger event like DELETE instead of INSERT
      3. Given this trigger snippet for audit logging:
      CREATE TRIGGER audit_update AFTER UPDATE ON products FOR EACH ROW BEGIN INSERT INTO audit_log (product_id, old_price, new_price) VALUES (OLD.id, OLD.price, NEW.price); END;

      What will be inserted into audit_log when a product's price changes from 100 to 120?
      medium
      A. (product_id: NULL, old_price: 100, new_price: 120)
      B. (product_id: product's id, old_price: NULL, new_price: NULL)
      C. (product_id: product's id, old_price: 120, new_price: 100)
      D. (product_id: product's id, old_price: 100, new_price: 120)

      Solution

      1. Step 1: Understand OLD and NEW in triggers

        OLD refers to the row before update, NEW refers to the row after update.
      2. Step 2: Analyze the insert statement

        The trigger inserts OLD.id, OLD.price, and NEW.price, so product_id is the old id, old_price is 100, new_price is 120.
      3. Final Answer:

        (product_id: product's id, old_price: 100, new_price: 120) -> Option D
      4. Quick Check:

        OLD = before update, NEW = after update [OK]
      Hint: OLD = old row, NEW = new row in update triggers [OK]
      Common Mistakes:
      • Mixing OLD and NEW values
      • Assuming NULL values for unchanged columns
      • Confusing product_id with price values
      4. You wrote this trigger to log deletions:
      CREATE TRIGGER log_delete AFTER DELETE ON orders FOR EACH ROW BEGIN INSERT INTO audit_orders (order_id, deleted_at) VALUES (NEW.id, NOW()); END;

      Why does this trigger cause an error?
      medium
      A. Missing FOR EACH STATEMENT clause
      B. Using NEW keyword in a DELETE trigger causes an error
      C. NOW() function is not allowed in triggers
      D. Trigger must be BEFORE DELETE, not AFTER DELETE

      Solution

      1. Step 1: Recall OLD and NEW usage in triggers

        In DELETE triggers, only OLD is available because the row is removed; NEW does not exist.
      2. Step 2: Identify the error cause

        The trigger uses NEW.id in a DELETE trigger, which causes an error because NEW is undefined.
      3. Final Answer:

        Using NEW keyword in a DELETE trigger causes an error -> Option B
      4. Quick Check:

        DELETE triggers use OLD, not NEW [OK]
      Hint: Use OLD in DELETE triggers, NEW causes errors [OK]
      Common Mistakes:
      • Using NEW instead of OLD in DELETE triggers
      • Confusing FOR EACH ROW and FOR EACH STATEMENT
      • Thinking NOW() is disallowed in triggers
      5. You want to create an audit trigger that logs INSERT and UPDATE actions on the customers table into customer_audit. Which approach correctly handles both actions in one trigger?
      hard
      A. Create two separate triggers: one AFTER INSERT and one AFTER UPDATE
      B. Create one AFTER INSERT trigger and ignore UPDATE actions
      C. Create one trigger AFTER INSERT OR UPDATE and use conditional logic inside
      D. Create a BEFORE DELETE trigger to log INSERT and UPDATE

      Solution

      1. Step 1: Understand trigger event options

        Some SQL systems allow triggers on multiple events like AFTER INSERT OR UPDATE.
      2. Step 2: Use conditional logic inside trigger

        Inside the trigger, check if the event is INSERT or UPDATE to log accordingly.
      3. Step 3: Compare options

        Create one trigger AFTER INSERT OR UPDATE and use conditional logic inside correctly combines both events in one trigger with logic; Create two separate triggers: one AFTER INSERT and one AFTER UPDATE uses two triggers, which is valid but not one trigger.
      4. Final Answer:

        Create one trigger AFTER INSERT OR UPDATE and use conditional logic inside -> Option C
      5. Quick Check:

        One trigger can handle multiple events with conditions [OK]
      Hint: Use AFTER INSERT OR UPDATE with IF inside trigger [OK]
      Common Mistakes:
      • Trying to log UPDATE in an INSERT-only trigger
      • Using BEFORE DELETE for INSERT/UPDATE logging
      • Not using conditional logic inside multi-event triggers
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard