精华内容
下载资源
问答
  • CREATE TRIGGER trigger_name [BEFORE| AFTER | INSTEAD OF ] event ON table_name [ 触发器逻辑 ] 例子如下: CREATE TRIGGER one_trigger BEFORE insert ON school_table EXECUTE procedure function_name() ...

    创建触发器

    规范

    CREATE TRIGGER trigger_name [BEFORE| AFTER | INSTEAD OF ] event ON table_name
    [
    触发器逻辑
    ]

    例子如下:

    CREATE TRIGGER one_trigger BEFORE insert
    ON school_table EXECUTE procedure function_name() ## function_name()为事先创建的存储函数

    覆盖原来的触发器的方法

    1、不能使用 create or replace trigger方法,PostgreSQL无这种使用方法
    2、操作应该如下:
    1)先判断是否存在,如果存在,则删除

    DROP TRIGGER IF EXISTS one_trigger ON school_table;

    2 ) 重新创建

    CREATE TRIGGER one_trigger BEFORE insert
    ON school_table EXECUTE procedure function_name()

    展开全文
  • CREATE TRIGGER 创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。 ...
    CREATE TRIGGER 
    
    创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。

    语法

    CREATE TRIGGER trigger_name
    ON { table ¦ view }
    [ WITH ENCRYPTION ]
    {
        { { FOR ¦ AFTER ¦ INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
            [ WITH APPEND ]
            [ NOT FOR REPLICATION ]
            AS
            [ { IF UPDATE ( column )
                [ { AND ¦ OR } UPDATE ( column ) ]
                    [ ...n ]
            ¦ IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                    { comparison_operator } column_bitmask [ ...n ]
           	 } ]
            sql_statement [ ...n ]
        }
    } 

    参数
    trigger_name

    是触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。

    Table ¦ view

    是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。

    WITH ENCRYPTION

    加密 syscomments 表中包含 CREATE TRIGGER 语句文本的条目。使用 WITH ENCRYPTION 可防止将触发器作为 SQL Server 复制的一部分发布。

    AFTER

    指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。

    如果仅指定 FOR 关键字,则 AFTER 是默认设置。

    不能在视图上定义 AFTER 触发器。

    INSTEAD OF

    指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的操作。

    在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 INSTEAD OF 触发器。然而,可以在每个具有 INSTEAD OF 触发器的视图上定义视图。

    INSTEAD OF 触发器不能在 WITH CHECK OPTION 的可更新视图上定义。如果向指定了 WITH CHECK OPTION 选项的可更新视图添加 INSTEAD OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。

    { [DELETE] [,] [INSERT] [,] [UPDATE] }

    是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。

    对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE 选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。

    WITH APPEND

    指定应该添加现有类型的其它触发器。只有当兼容级别是 65 或更低时,才需要使用该可选子句。如果兼容级别是 70 或更高,则不必使用 WITH APPEND 子句添加现有类型的其它触发器(这是兼容级别设置为 70 或更高的 CREATE TRIGGER 的默认行为)。有关更多信息,请参见 sp_dbcmptlevel。

    WITH APPEND 不能与 INSTEAD OF 触发器一起使用,或者,如果显式声明 AFTER 触发器,也不能使用该子句。只有当出于向后兼容而指定 FOR 时(没有 INSTEAD OF 或 AFTER),才能使用 WITH APPEND。以后的版本将不支持 WITH APPEND 和 FOR(将被解释为 AFTER)。

    NOT FOR REPLICATION

    表示当复制进程更改触发器所涉及的表时,不应执行该触发器。

    AS

    是触发器要执行的操作。

    sql_statement

    是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。

    当尝试 DELETE、INSERT 或 UPDATE 操作时,Transact-SQL语句中指定的触发器操作将生效。

    触发器可以包含任意数量和种类的 Transact-SQL 语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的 Transact-SQL 语句常常包含控制流语言

    展开全文
  • 触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时...在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | ...

    触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

     

    基本语法

    在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。

    语法格式如下:

    CREATE <触发器名> < BEFORE | AFTER >
    <INSERT | UPDATE | DELETE >
    ON <表名> FOR EACH Row<触发器主体>

    语法说明如下。

    1) 触发器名

    触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。

    2) INSERT | UPDATE | DELETE

    触发事件,用于指定激活触发器的语句的种类。

    注意:三种触发器的执行时间如下。

    • INSERT:将新行插入表时激活触发器。例如,INSERT 的 BEFORE 触发器不仅能被 MySQL 的 INSERT 语句激活,也能被 LOAD DATA 语句激活。
    • DELETE: 从表中删除某一行数据时激活触发器,例如 DELETE 和 REPLACE 语句。
    • UPDATE:更改表中某一行数据时激活触发器,例如 UPDATE 语句。

    3) BEFORE | AFTER

    BEFORE 和 AFTER,触发器被触发的时刻,表示触发器是在激活它的语句之前或之后触发。若希望验证新数据是否满足条件,则使用 BEFORE 选项;若希望在激活触发器的语句执行之后完成几个或更多的改变,则通常使用 AFTER 选项。

    4) 表名

    与触发器相关联的表名,此表必须是永久性表,不能将触发器与临时表或视图关联起来。在该表上触发事件发生时才会激活触发器。同一个表不能拥有两个具有相同触发时刻和事件的触发器。例如,对于一张数据表,不能同时有两个 BEFORE UPDATE 触发器,但可以有一个 BEFORE UPDATE 触发器和一个 BEFORE INSERT 触发器,或一个 BEFORE UPDATE 触发器和一个 AFTER UPDATE 触发器。

    5) 触发器主体

    触发器动作主体,包含触发器激活时将要执行的 MySQL 语句。如果要执行多个语句,可使用 BEGIN…END 复合语句结构。

    6) FOR EACH ROW

    一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作。例如,使用 INSERT 语句向某个表中插入多行数据时,触发器会对每一行数据的插入都执行相应的触发器动作。

    注意:每个表都支持 INSERT、UPDATE 和 DELETE 的 BEFORE 与 AFTER,因此每个表最多支持 6 个触发器。每个表的每个事件每次只允许有一个触发器。单一触发器不能与多个事件或多个表关联。

    另外,在 MySQL 中,若需要查看数据库中已有的触发器,则可以使用 SHOW TRIGGERS 语句。

    创建 BEFORE 类型触发器

    在 test_db 数据库中,数据表 tb_emp8 为员工信息表,包含 id、name、deptId 和 salary 字段,数据表 tb_emp8 的表结构如下所示。

      mysql> SELECT * FROM tb_emp8;  Empty set (0.07 sec)  mysql> DESC tb_emp8;  +--------+-------------+------+-----+---------+-------+  | Field  | Type        | Null | Key | Default | Extra |  +--------+-------------+------+-----+---------+-------+  | id     | int(11)     | NO   | PRI | NULL    |       |  | name   | varchar(22) | YES  | UNI | NULL    |       |  | deptId | int(11)     | NO   | MUL | NULL    |       |  | salary | float       | YES  |     | 0       |       |  +--------+-------------+------+-----+---------+-------+  4 rows in set (0.05 sec)

    【实例 1】创建一个名为 SumOfSalary 的触发器,触发的条件是向数据表 tb_emp8 中插入数据之前,对新插入的 salary 字段值进行求和计算。输入的 SQL 语句和执行过程如下所示。

      mysql> CREATE TRIGGER SumOfSalary      -> BEFORE INSERT ON tb_emp8      -> FOR EACH ROW      -> SET @sum=@sum+NEW.salary;  Query OK, 0 rows affected (0.35 sec)

    触发器 SumOfSalary 创建完成之后,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击向表 tb_emp8 中插入记录时,定义的 sum 值由 0 变成了 1500,即插入值 1000 和 500 的和,如下所示。

      SET @sum=0;  Query OK, 0 rows affected (0.05 sec)  mysql> INSERT INTO tb_emp8      -> VALUES(1,'A',1,1000),(2,'B',1,500);  Query OK, 2 rows affected (0.09 sec)  Records: 2  Duplicates: 0  Warnings: 0  mysql> SELECT @sum;  +------+  | @sum |  +------+  | 1500 |  +------+  1 row in set (0.03 sec)

    创建 AFTER 类型触发器

    在 test_db 数据库中,数据表 tb_emp6 和 tb_emp7 都为员工信息表,包含 id、name、deptId 和 salary 字段,数据表 tb_emp6 和 tb_emp7 的表结构如下所示。

      mysql> SELECT * FROM tb_emp6;  Empty set (0.07 sec)  mysql> SELECT * FROM tb_emp7;  Empty set (0.03 sec)  mysql> DESC tb_emp6;  +--------+-------------+------+-----+---------+-------+  | Field  | Type        | Null | Key | Default | Extra |  +--------+-------------+------+-----+---------+-------+  | id     | int(11)     | NO   | PRI | NULL    |       |  | name   | varchar(25) | YES  |     | NULL    |       |  | deptId | int(11)     | YES  | MUL | NULL    |       |  | salary | float       | YES  |     | NULL    |       |  +--------+-------------+------+-----+---------+-------+  4 rows in set (0.00 sec)  mysql> DESC tb_emp7;  +--------+-------------+------+-----+---------+-------+  | Field  | Type        | Null | Key | Default | Extra |  +--------+-------------+------+-----+---------+-------+  | id     | int(11)     | NO   | PRI | NULL    |       |  | name   | varchar(25) | YES  |     | NULL    |       |  | deptId | int(11)     | YES  |     | NULL    |       |  | salary | float       | YES  |     | 0       |       |  +--------+-------------+------+-----+---------+-------+  4 rows in set (0.04 sec)

    【实例 2】创建一个名为 double_salary 的触发器,触发的条件是向数据表 tb_emp6 中插入数据之后,再向数据表 tb_emp7 中插入相同的数据,并且 salary 为 tb_emp6 中新插入的 salary 字段值的 2 倍。输入的 SQL 语句和执行过程如下所示。

      mysql> CREATE TRIGGER double_salary      -> AFTER INSERT ON tb_emp6      -> FOR EACH ROW      -> INSERT INTO tb_emp7      -> VALUES (NEW.id,NEW.name,deptId,2*NEW.salary);  Query OK, 0 rows affected (0.25 sec)

    触发器 double_salary 创建完成之后,向表 tb_emp6 中插入记录时,同时向表 tb_emp7 中插入相同的记录,并且 salary 字段为 tb_emp6 中 salary 字段值的 2 倍,如下所示。

      mysql> INSERT INTO tb_emp6      -> VALUES (1,'A',1,1000),(2,'B',1,500);  Query OK, 2 rows affected (0.09 sec)  Records: 2  Duplicates: 0  Warnings: 0  mysql> SELECT * FROM tb_emp6;  +----+------+--------+--------+  | id | name | deptId | salary |  +----+------+--------+--------+  |  1 | A    |      1 |   1000 |  |  2 | B    |      1 |    500 |  +----+------+--------+--------+  3 rows in set (0.04 sec)  mysql> SELECT * FROM tb_emp7;  +----+------+--------+--------+  | id | name | deptId | salary |  +----+------+--------+--------+  |  1 | A    |      1 |   2000 |  |  2 | B    |      1 |   1000 |  +----+------+--------+--------+  2 rows in set (0.06 sec)

     

    展开全文
  • 与常规触发器一样,事件触发器可以用任何包含事件触发器支持的过程语言编写,也可以用C语言编写,但能用纯SQL编写。 1. Overview of Event Trigger Behavior 每当与事件相关联的事件发生在定义它的数据库中时...

    PostgreSQL还提供了事件触发器。事件触发器是特定数据库的全局触发器,能够捕获DDL事件。

    与常规触发器一样,事件触发器可以用任何包含事件触发器支持的过程语言编写,也可以用C语言编写,但不能用纯SQL编写。

     

    1. Overview of Event Trigger Behavior

    每当与事件相关联的事件发生在定义它的数据库中时,事件触发器就会激发。目前,支持的事件只有是 ddl_command_start、ddl_command_end、table_rewrite和sql_drop。对其他事件的支持可以在将来的版本中添加。

    DDL命令启动事件发生在执行create、alter、drop、security label、comment、grant或revoke命令之前。在触发事件触发器之前,不检查受影响的对象是否存在。但是,作为例外,针对共享对象(数据库、角色和表空间)的DDL命令或针对事件触发器本身的命令不会发生此事件。事件触发器机制不支持这些对象类型。ddl_command_start 也发生在执行select into命令之前,因为这相当于CREATE TABLE AS。

    DDL命令结束事件发生在同一组命令执行之后。要获得有关发生的DDL操作的更多详细信息,请使用DDL命令结束事件触发器代码中的set返回函数pg_event_trigger_ddl_commands()。注意,触发器在操作发生后(但在事务提交之前)触发,因此系统目录可以读取为已更改。

    对于删除数据库对象的任何操作,SQL删除事件发生在DDL命令结束事件触发器之前。要列出已删除的对象,请使用SQL删除事件触发器代码中的set返回函数pg_event_trigger_dropped_objects()。注意,触发器是在对象从系统目录中删除后执行的,因此无法再查找它们。

    表重写事件发生在通过命令alter table和alter type的某些操作重写表之前。虽然其他控制语句可用于重写表,如cluster和vacuum,但表重写事件不会被它们触发。

    无法在中止的事务中执行事件触发器(与其他函数一样)。因此,如果DDL命令因错误而失败,则不会执行任何相关的 ddl_command_end 触发器。相反,如果ddl_command_start触发器因错误而失败,则不会再触发事件触发器,也不会尝试执行命令本身。类似地,如果ddl_command_end 触发器因错误而失败,DDL语句的效果将回滚,就像在包含事务中止的任何其他情况下一样。

    事件触发器是使用命令create event trigger创建的。要创建事件触发器,必须首先创建具有特殊返回类型事件触发器的函数。此函数不需要(也可能不需要)返回值;返回类型仅充当将作为事件触发器调用函数的信号。

    如果为特定事件定义了多个事件触发器,则它们将按触发器名称的字母顺序触发。

    触发器定义还可以指定when条件,例如,只能为用户希望截获的特定命令触发DDL命令启动触发器。这种触发器的常见用途是限制用户可以执行的DDL操作的范围。

     

     

    2. Event Trigger Firing Matrix

    lists all commands for which event triggers are supported.

    Command Tag

    ddl_command_start

    ddl_command_end

    sql_drop

    table_rewrite

    Notes

    ALTER AGGREGATE

    X

    X

    -

    -

     

    ALTER COLLATION

    X

    X

    -

    -

     

    ALTER CONVERSION

    X

    X

    -

    -

     

    ALTER DOMAIN

    X

    X

    -

    -

     

    ALTER EXTENSION

    X

    X

    -

    -

     

    ALTER FOREIGN DATA WRAPPER

    X

    X

    -

    -

     

    ALTER FOREIGN TABLE

    X

    X

    X

    -

     

    ALTER FUNCTION

    X

    X

    -

    -

     

    ALTER LANGUAGE

    X

    X

    -

    -

     

    ALTER OPERATOR

    X

    X

    -

    -

     

    ALTER OPERATOR CLASS

    X

    X

    -

    -

     

    ALTER OPERATOR FAMILY

    X

    X

    -

    -

     

    ALTER POLICY

    X

    X

    -

    -

     

    ALTER SCHEMA

    X

    X

    -

    -

     

    ALTER SEQUENCE

    X

    X

    -

    -

     

    ALTER SERVER

    X

    X

    -

    -

     

    ALTER TABLE

    X

    X

    X

    X

     

    ALTER TEXT SEARCH CONFIGURATION

    X

    X

    -

    -

     

    ALTER TEXT SEARCH DICTIONARY

    X

    X

    -

    -

     

    ALTER TEXT SEARCH PARSER

    X

    X

    -

    -

     

    ALTER TEXT SEARCH TEMPLATE

    X

    X

    -

    -

     

    ALTER TRIGGER

    X

    X

    -

    -

     

    ALTER TYPE

    X

    X

    -

    X

     

    ALTER USER MAPPING

    X

    X

    -

    -

     

    ALTER VIEW

    X

    X

    -

    -

     

    CREATE AGGREGATE

    X

    X

    -

    -

     

    COMMENT

    X

    X

    -

    -

    Only for local objects

    CREATE CAST

    X

    X

    -

    -

     

    CREATE COLLATION

    X

    X

    -

    -

     

    CREATE CONVERSION

    X

    X

    -

    -

     

    CREATE DOMAIN

    X

    X

    -

    -

     

    CREATE EXTENSION

    X

    X

    -

    -

     

    CREATE FOREIGN DATA WRAPPER

    X

    X

    -

    -

     

    CREATE FOREIGN TABLE

    X

    X

    -

    -

     

    CREATE FUNCTION

    X

    X

    -

    -

     

    CREATE INDEX

    X

    X

    -

    -

     

    CREATE LANGUAGE

    X

    X

    -

    -

     

    CREATE OPERATOR

    X

    X

    -

    -

     

    CREATE OPERATOR CLASS

    X

    X

    -

    -

     

    CREATE OPERATOR FAMILY

    X

    X

    -

    -

     

    CREATE POLICY

    X

    X

    -

    -

     

    CREATE RULE

    X

    X

    -

    -

     

    CREATE SCHEMA

    X

    X

    -

    -

     

    CREATE SEQUENCE

    X

    X

    -

    -

     

    CREATE SERVER

    X

    X

    -

    -

     

    CREATE STATISTICS

    X

    X

    -

    -

     

    CREATE TABLE

    X

    X

    -

    -

     

    CREATE TABLE AS

    X

    X

    -

    -

     

    CREATE TEXT SEARCH CONFIGURATION

    X

    X

    -

    -

     

    CREATE TEXT SEARCH DICTIONARY

    X

    X

    -

    -

     

    CREATE TEXT SEARCH PARSER

    X

    X

    -

    -

     

    CREATE TEXT SEARCH TEMPLATE

    X

    X

    -

    -

     

    CREATE TRIGGER

    X

    X

    -

    -

     

    CREATE TYPE

    X

    X

    -

    -

     

    CREATE USER MAPPING

    X

    X

    -

    -

     

    CREATE VIEW

    X

    X

    -

    -

     

    DROP AGGREGATE

    X

    X

    X

    -

     

    DROP CAST

    X

    X

    X

    -

     

    DROP COLLATION

    X

    X

    X

    -

     

    DROP CONVERSION

    X

    X

    X

    -

     

    DROP DOMAIN

    X

    X

    X

    -

     

    DROP EXTENSION

    X

    X

    X

    -

     

    DROP FOREIGN DATA WRAPPER

    X

    X

    X

    -

     

    DROP FOREIGN TABLE

    X

    X

    X

    -

     

    DROP FUNCTION

    X

    X

    X

    -

     

    DROP INDEX

    X

    X

    X

    -

     

    DROP LANGUAGE

    X

    X

    X

    -

     

    DROP OPERATOR

    X

    X

    X

    -

     

    DROP OPERATOR CLASS

    X

    X

    X

    -

     

    DROP OPERATOR FAMILY

    X

    X

    X

    -

     

    DROP OWNED

    X

    X

    X

    -

     

    DROP POLICY

    X

    X

    X

    -

     

    DROP RULE

    X

    X

    X

    -

     

    DROP SCHEMA

    X

    X

    X

    -

     

    DROP SEQUENCE

    X

    X

    X

    -

     

    DROP SERVER

    X

    X

    X

    -

     

    DROP STATISTICS

    X

    X

    X

    -

     

    DROP TABLE

    X

    X

    X

    -

     

    DROP TEXT SEARCH CONFIGURATION

    X

    X

    X

    -

     

    DROP TEXT SEARCH DICTIONARY

    X

    X

    X

    -

     

    DROP TEXT SEARCH PARSER

    X

    X

    X

    -

     

    DROP TEXT SEARCH TEMPLATE

    X

    X

    X

    -

     

    DROP TRIGGER

    X

    X

    X

    -

     

    DROP TYPE

    X

    X

    X

    -

     

    DROP USER MAPPING

    X

    X

    X

    -

     

    DROP VIEW

    X

    X

    X

    -

     

    GRANT

    X

    X

    -

    -

    Only for local objects

    IMPORT FOREIGN SCHEMA

    X

    X

    -

    -

     

    REVOKE

    X

    X

    -

    -

    Only for local objects

    SECURITY LABEL

    X

    X

    -

    -

    Only for local objects

    SELECT INTO

    X

    X

    -

    -

     

     

     

    3. event trigger functions

    pg_event_trigger_ddl_commands returns a list of DDL commands executed by each user action, when invoked in a function attached to a ddl_command_end event trigger. If called in any other context, an error is raised. pg_event_trigger_ddl_commands returns one row for each base command executed; some commands that are a single SQL sentence may return more than one row. This function returns the following columns:

    Name

    Type

    Description

    classid

    oid

    OID of catalog the object belongs in

    objid

    oid

    OID of the object itself

    objsubid

    integer

    Sub-object ID (e.g. attribute number for a column)

    command_tag

    text

    Command tag

    object_type

    text

    Type of the object

    schema_name

    text

    Name of the schema the object belongs in, if any; otherwise NULL. No quoting is applied.

    object_identity

    text

    Text rendering of the object identity, schema-qualified. Each identifier included in the identity is quoted if necessary.

    in_extension

    bool

    True if the command is part of an extension script

    command

    pg_ddl_command

    A complete representation of the command, in internal format. This cannot be output directly, but it can be passed to other functions to obtain different pieces of information about the command.

     

     

    pg_event_trigger_dropped_objects returns a list of all objects dropped by the command in whose sql_drop event it is called. If called in any other context, pg_event_trigger_dropped_objects raises an error. pg_event_trigger_dropped_objects returns the following columns:

    Name

    Type

    Description

    classid

    oid

    OID of catalog the object belonged in

    objid

    oid

    OID of the object itself

    objsubid

    integer

    Sub-object ID (e.g. attribute number for a column)

    original

    bool

    True if this was one of the root object(s) of the deletion

    normal

    bool

    True if there was a normal dependency relationship in the dependency graph leading to this object

    is_temporary

    bool

    True if this was a temporary object

    object_type

    text

    Type of the object

    schema_name

    text

    Name of the schema the object belonged in, if any; otherwise NULL. No quoting is applied.

    object_name

    text

    Name of the object, if the combination of schema and name can be used as a unique identifier for the object; otherwise NULL. No quoting is applied, and name is never schema-qualified.

    object_identity

    text

    Text rendering of the object identity, schema-qualified. Each identifier included in the identity is quoted if necessary.

    address_names

    text[]

    An array that, together with object_type and address_args, can be used by the pg_get_object_address() function to recreate the object address in a remote server containing an identically named object of the same kind

    address_args

    text[]

    Complement for address_names

     

    Table Rewrite information

    Name

    Return Type

    Description

    pg_event_trigger_table_rewrite_oid()

    Oid

    The OID of the table about to be rewritten.

    pg_event_trigger_table_rewrite_reason()

    int

    The reason code(s) explaining the reason for rewriting. The exact meaning of the codes is release dependent.

     

    展开全文
  • SQLite的sql语法之CREATETRIGGER CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [database-name .] ...
  • CREATE TRIGGER

    千次阅读 2012-11-09 15:41:39
    创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。...CREATE TRIGGER trigger_name  ON { table | view }  [ WITH ENCRYPTION ]  {  {
  • SQLite语法 CREATE TRIGGER

    千次阅读 2010-05-17 10:01:00
    时间:2009-08-14 21:18:18来源:网络 作者:未知 点击:214次 CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE |
  • CREATE TRIGGER 触发器

    2012-09-08 09:59:28
    CREATE TRIGGER 创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。 ...
  • 13、创建触发器(CREATE TRIGGER

    千次阅读 2020-10-17 17:31:20
    在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row<触发器主体&...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    不支持事务。 使用表级锁,如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。 艿艿:也就是说,我们需要花太多力气在 MyISAM 的学习上。 ? 请说明 InnoDB 和 MyISAM 的区别 InnoDB...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    40 视图/虚表 view 41 索引 42 存储过程 procedure 42 事务 transaction 43 触发器 trigger 46 练习 46 一、单表查询练习 46 二、聚合函数练习 47 三、分组查询练习 47 四、嵌套查询练习 48 五、联接查询练习 48 六...
  • 【数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    -- 如果刷新时带CONCURRENTLY则无需创建唯一索引 CREATE UNIQUE INDEX IDX_MAX_ID ON MAX_ID_MVIEW(PART_ID); -- 利用watch命令每120s刷新一次物化视图 REFRESH MATERIALIZED VIEW CONCURRENTLY MAX_ID_MVIEW; \...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 数据操纵DML:Select ,insert,update,delete, 数据控制DCL:grant,revoke 2. 内联接,外联接区别? 内连接是保证两个表中所有的行都要满足...
  • MySQL学习总结

    千次阅读 2019-05-21 14:39:29
    觉得这本书相对简单、基础、实用、全面,我们大多数人喜欢搞一些高深的东西,而忽视一些简单基础的东西,在工作当中我们犯错的地方往往是那些简单基础的地方,有的时候一些基础的DDL、DML并一定是信手拈来,有些...
  • 触发器(Trigger)的使用方法详解

    万次阅读 2017-12-01 13:30:33
    MySQL包含对触发器的支持。触发器是一种与表操作有关的...创建触发器在MySQL中,创建触发器语法如下:CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt其中:trigger
  • CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ]database-event ON [database-name .] table-nametrigger-action sql-statement 
  • mysql触发器trigger 实例详解

    千次阅读 2018-12-25 17:07:56
    CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt trigger_name:触发器的名称 tirgger_time:触发时机,为BEFORE或者AFTER trigger_event:触发事件...
  • SQLite创建触发器 CREATE TRIGGER

    千次阅读 2013-07-29 17:20:53
    CREATE TRIGGER sql-statement ::=CREATE[TEMP|TEMPORARY]TRIGGERtrigger-name[BEFORE|AFTER] database-eventON[database-name.]table-name trigger-actionsql-statement ::=CREATE[TEMP|TEMPORARY]...
  • Oracle(六)view,trigger

    2017-10-31 12:02:42
    视图 定义 视图是oracle又一种数据对象,视图的主要的用处是简化操作,提高安全,满足不同用户的查询需求,视图不是...Create view 视图名字 asselect语句 [with read only]   说明:如果创建视图的时候,末尾带w
  • Trigger

    2014-11-15 12:07:13
    可以针对insert,update,delete的执行前,执行后分别创建6种事件触发器,可以对select创建。 before insert/update/delete;...create trigger trigger_name after update on table_name for each row u
  • CREATE TRIGGER trigger_activity_id_delete AFTER DELETE ON tp_activity FOR EACH ROW BEGIN DELETE FROM tp_code WHERE OLD.id = tp_code.`activity_id`; END 报错: 1 queries executed, 0 success, 1 error...
  • mysql create trigger

    千次阅读 2009-12-25 15:59:00
    基本语法: CREATE TRIGGER { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON FOR EACH ROW 触发器必须有名字,最多64个字符 但是mysql不支持一张表多触发器 解决方案: 由于mysql默认的结束符(定界符)是分号;...
  • PostgreSql TRIGGER 触发器简单样例

    千次阅读 2018-11-29 15:19:03
    1.创建测试表、视图 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); CREATE ...
  • MySQL触发器 trigger之for each row

    千次阅读 2014-10-24 10:20:50
    for each row 每行受影响,触发器都...CREATE TRIGGER test5 AFTER UPDATE ON goods FOR EACH ROW BEGIN INSERT INTO `ord` VALUES (1, 2, 2); END$$ mysql只支持行级触发器,影响多少行就会执行多少次。
  • 《数据库系统概论》复习

    千次阅读 多人点赞 2019-05-27 12:13:27
    将信息世界转换为机器世界,得到DBMS支持的数据模型。 2、概念模型: 信息世界中的基本概念: (1)实体:客观存在并可相互区别的事物。 (2) 属性 :实体的特性称为属性。 (3)码:唯一标识实体的属性集称为...
  • SQLite-CREATE TRIGGER

    2011-12-07 09:07:40
    SQLite-CREATE TRIGGER   http://www.sqlite.com.cn/MySqlite/5/49.Html   CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ]database-event ON...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,438
精华内容 14,575
关键字:

trigger不支持create