SQL Practice Logo

SQLPractice Online

Triggers & Stored Procedures: Functions

Module: Schema Design & Advanced DDL

## PostgreSQL Trigger Syntax

```sql

CREATE TRIGGER trigger_name

{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE}

ON table_name

[FOR EACH {ROW | STATEMENT}]

[WHEN (condition)]

EXECUTE FUNCTION function_name();

-- Trigger function

CREATE FUNCTION function_name() RETURNS TRIGGER AS $$

BEGIN

-- Access OLD values (UPDATE/DELETE)

-- Access NEW values (INSERT/UPDATE)

-- TG_OP: Operation type (INSERT/UPDATE/DELETE)

-- TG_TABLE_NAME: Table name

RETURN NEW; -- or OLD or NULL

END;

$$ LANGUAGE plpgsql;

```

## MySQL Trigger Syntax

```sql

CREATE TRIGGER trigger_name

{BEFORE | AFTER} {INSERT | UPDATE | DELETE}

ON table_name

FOR EACH ROW

BEGIN

-- Access OLD values (UPDATE/DELETE)

-- Access NEW values (INSERT/UPDATE)

-- Trigger body

END;

```

## Stored Procedure Syntax

**PostgreSQL:**

```sql

CREATE PROCEDURE procedure_name(param1 TYPE, param2 TYPE)

LANGUAGE plpgsql

AS $$

BEGIN

-- Procedure body

END;