PostgreSQL 删除触发器

简介:在本教程中,您将学习如何使用 PostgreSQL DROP TRIGGER 从表中删除触发器。

PostgreSQL DROP TRIGGER 语句介绍

要从表中删除触发器,请使用 DROP TRIGGER 具有以下语法的语句:

DROP TRIGGER [IF EXISTS] trigger_name 
ON table_name [ CASCADE | RESTRICT ];

在这个语法中:

首先,在 DROP TRIGGER 关键字后指定要删除的触发器的名称。

其次,用于 IF EXISTS 仅在触发器存在时有条件地删除触发器。尝试删除不存在的触发器而不指定 IF EXISTS 语句会导致错误。如果您使用 IF EXISTS 删除不存在的触发器,PostgreSQL 会发出通知。

第三,指定触发器所属的表名。如果表属于特定模式,则可以使用表的模式限定名称,例如 schema_name.table_name .

第四, CASCADE 如果要自动删除依赖于触发器的对象,请使用该选项。请注意,该 CASCADE 选项还将删除依赖于触发器的对象的对象。

第五, RESTRICT 如果有任何对象依赖它,请使用拒绝删除触发器的选项。默认情况下,该 DROP TRIGGER 语句使用 RESTRICT .

请注意,在 SQL 标准中,触发器名称不是表的本地名称,因此该语句很简单:

DROP TRIGGER trigger_name;

PostgreSQL DROP TRIGGER 示例

首先,创建一个函数来验证员工的用户名。工作人员的用户名不能为空,长度至少为8。

CREATE FUNCTION check_staff_user()
    RETURNS TRIGGER
AS $$
BEGIN
    IF length(NEW.username) < 8 OR NEW.username IS NULL THEN
        RAISE EXCEPTION 'The username cannot be less than 8 characters';
    END IF;
    IF NEW.NAME IS NULL THEN
        RAISE EXCEPTION 'Username cannot be NULL';
    END IF;
    RETURN NEW;
END;
$$
LANGUAGE plpgsql;

其次,在员工表上创建一个新的触发器来检查员工的用户名。每当您在 staff 表中插入或更新一行(来自示例数据库)时,就会触发此触发器:

CREATE TRIGGER username_check 
    BEFORE INSERT OR UPDATE
ON staff
FOR EACH ROW 
    EXECUTE PROCEDURE check_staff_user();

PostgreSQL DROP 触发器示例

三、使用 DROP TRIGGER 语句删除 username_check 触发器:

DROP TRIGGER username_check
ON staff;

在本教程中,您学习了如何使用 PostgreSQL DROP TRIGGER 语句从表中删除触发器。