PostgreSQL删除触发器-PostgreSQL教程|
PostgreSQL 删除触发器
在本节中,我们将了解PostgreSQL DROP TRIGGER命令的工作原理,并查看在 PostgreSQL 中从指定表中删除和删除触发器的示例。
什么是 PostgreSQL Drop Trigger 命令?
在 PostgreSQL 中,我们可以使用Drop Trigger命令删除现有的触发器。
PostgreSQL Drop trigger 命令的语法
下图用于从特定表中删除触发器:
DROP TRIGGER [IF EXISTS] trigger_name
ON table_name [ CASCADE | RESTRICT ];
在上面的语法中,我们使用了以下参数:
参数 | 描述 |
---|---|
Trigger_name | 用于定义我们需要移除的触发器名称,在DROP TRIGGER关键字之后提到。 |
If EXISTS | If EXISTS 参数用于仅在触发器存在时临时移除触发器。如果我们尝试删除一个不存在的触发器而不指定IF EXISTS命令,我们将在结果中得到一个错误。如果我们使用IF EXISTS删除不存在的触发器,PostgreSQL 会发出通知作为替代方案。 |
Table_name | 该表名参数用于定义其中该触发是属于表名。如果表链接到定义的模式,我们可以使用表的模式限定名称,例如schema_name.table_name。 |
CASCADE | 如果我们想删除自动依赖触发器的对象,我们可以使用CASCADE选项。 |
RESTRICT | 如果任何对象依赖于触发器或者我们想拒绝或删除该触发器,我们可以使用RESTRICT选项。该DROP TRIGGER命令使用预设限制的选项。 |
注意:在 SQL 中,触发器名称不限于表,因此,我们可以使用以下命令:
- DROP TRIGGER 触发器名称;
PostgreSQL Drop Trigger 命令示例
让我们看一个简单的例子来理解PostgreSQL DROP Trigger命令的工作。
为此,我们采用了Employee表,该表是我们在PostgreSQL 教程的前面部分中创建的。
步骤 1:创建一个新函数
首先,我们将创建一个函数,它会检查员工的 emp_name,其中员工的**姓名长度必须至少为10**且不能为空。
CREATE FUNCTION check_emp_name()
RETURNS TRIGGER
AS $$
BEGIN
IF length(NEW.emp_name) < 10 OR NEW.emp_name IS NULL THEN
RAISE EXCEPTION 'The emp_name cannot be less than 10 characters';
END IF;
IF NEW.emp_nAME IS NULL THEN
RAISE EXCEPTION 'emp_name cannot be NULL';
END IF;
RETURN NEW;
END;
$$
LANGUAGE plpgsql;
输出
执行上述命令时,我们将收到以下消息:check_emp_name()函数已成功创建到组织数据库中。
Step2:创建一个新的触发器
创建check_emp_name()函数后,我们将在员工表上创建一个新触发器来检查员工的 emp_name。
每当我们在Employee表(取自Organization数据库)中更新或插入一行时,都会执行相同的触发器:
CREATE TRIGGER emp_name_check
BEFORE INSERT OR UPDATE
ON employee
FOR EACH ROW
EXECUTE PROCEDURE check_emp_name();
输出
执行上述命令后,我们会得到如下消息窗口,显示已成功为Employee表插入了emp_name_check触发器。
并且,我们还可以在Organization数据库的对象树中验证上面创建的函数(check_emp_name())和触发器(emp_name_check)。
步骤 3:删除触发器
一旦功能和触发已成功生成,我们将删除emp_name_check触发和的帮助下DROP TRIGGER命令,如下图所示:
DROP TRIGGER emp_name_check
ON employee;
输出
执行上述命令后,我们将得到以下输出,显示特定触发器已成功从Employee表中删除。
概述
在PostgreSQL Drop Trigger部分,我们学习了以下主题:
- 我们了解PostgreSQL drop trigger命令的用法,它用于删除特定表的触发器。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|