Updated on 2024-05-31 GMT+08:00

ALTER TRIGGER

Function

ALTER TRIGGER modifies the definition of a trigger.

Precautions

Only the owner of a table where a trigger is created and system administrators can run the ALTER TRIGGER statement.

Syntax

1
ALTER TRIGGER trigger_name ON table_name RENAME TO new_name;

Parameter Description

  • trigger_name

    Specifies the name of the trigger to be modified.

    Value range: an existing trigger

  • table_name

    Specifies the name of the table where the trigger to be modified is located.

    Value range: an existing table having a trigger

  • new_name

    Specifies the new trigger name.

    Value range: a string that complies with the identifier naming convention. A value contains a maximum of 63 characters and cannot be the same as other triggers on the same table.

Example

Create a source table and a trigger table:

1
2
3
4
5
DROP TABLE IF EXISTS test_trigger_src_tbl;
DROP TABLE IF EXISTS test_trigger_des_tbl;

CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);

Create the trigger function tri_insert_func():

1
2
3
4
5
6
7
8
9
DROP FUNCTION IF EXISTS tri_insert_func;
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS
           $$
           DECLARE
           BEGIN
                   INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3);
                   RETURN NEW;
           END
           $$ LANGUAGE PLPGSQL;

Create an INSERT trigger:

1
2
3
4
CREATE TRIGGER insert_trigger
           BEFORE INSERT ON test_trigger_src_tbl
           FOR EACH ROW
           EXECUTE PROCEDURE tri_insert_func();

Modified the trigger delete_trigger.

1
ALTER TRIGGER insert_trigger ON test_trigger_src_tbl RENAME TO insert_trigger_renamed;

Disable the trigger insert_trigger.

1
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger_renamed;  

Disable all triggers on the test_trigger_src_tbl table.

1
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL;