mysql触发器怎么取值
时间 : 2023-03-12 23:14:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL触发器可以在特定的条件下触发MySQL服务端的自动化操作。在触发器中,可以通过一些内置的关键字获取到相应的值,例如:NEW、OLD、NEW.row_name、OLD.row_name等。

1. NEW和OLD关键字

在MySQL触发器中,NEW和OLD是两个内置的关键字。他们主要用来获取被触发操作所影响的行的旧值和新值。

NEW和OLD关键字只能在对应的操作类型的触发器中使用,如在INSERT触发器中使用NEW,而在UPDATE触发器中同时可以使用NEW和OLD。在DELETE触发器中,只能使用OLD。

使用示例:

INSERT触发器:

```sql

CREATE TRIGGER trigger_name AFTER INSERT ON table_name

FOR EACH ROW

BEGIN

INSERT INTO log_table (col1, col2, col3) VALUES (NEW.col1, NEW.col2, NEW.col3);

END

在INSERT触发器中,可以使用NEW来获取插入新行的值,然后将其插入到log_table表中。

UPDATE触发器:

```sql

CREATE TRIGGER trigger_name AFTER UPDATE ON table_name

FOR EACH ROW

BEGIN

INSERT INTO log_table (col1, col2, col3) VALUES (OLD.col1, NEW.col2, NEW.col3);

END

在UPDATE触发器中,可以使用NEW和OLD来获取更新之前和更新之后的值,然后将这些值插入到log_table表中。

DELETE触发器:

```sql

CREATE TRIGGER trigger_name AFTER DELETE ON table_name

FOR EACH ROW

BEGIN

INSERT INTO log_table (col1, col2, col3) VALUES (OLD.col1, OLD.col2, OLD.col3);

END

在DELETE触发器中,只有OLD关键字可用,可以使用OLD来获取删除的行的值,然后将其插入到log_table表中。

2. NEW.row_name和OLD.row_name关键字

在UPDATE触发器中,除了NEW和OLD关键字以外,还可以通过NEW.row_name和OLD.row_name来获取具体的列值。

使用示例:

```sql

CREATE TRIGGER trigger_name AFTER UPDATE ON table_name

FOR EACH ROW

BEGIN

INSERT INTO log_table (col1, col2, col3) VALUES (OLD.col1, NEW.col2, NEW.col3);

INSERT INTO another_table (col4, col5) VALUES (OLD.col4, NEW.col5);

END

在UPDATE触发器中,除了插入到log_table表中之外,还将new_col5值插入到另一个表中。

总结:

MySQL触发器是一个非常有用的工具,可以在需要时自动化执行某项操作。使用触发器时,一定要充分了解和掌握关键字的使用方法。

MySQL触发器是一种用于监测并响应指定条件的数据库操作的特殊存储过程。当特定的数据条件满足时,MySQL触发器会自动执行指定的操作,如INSERT、UPDATE或DELETE。这些操作可以用来更新数据、创建记录或进行其他相关操作。

在创建MySQL触发器时,您可以使用一些内置的MySQL函数来取值。以下是一些常见的MySQL函数,可以用于取得MySQL触发器中的值:

1. OLD和NEW

OLD和NEW是MySQL触发器中的关键字,它们指代被修改和新值。在触发器中,您可以使用OLD和NEW来访问在操作之前和之后的值。

例如,如果您想要在一个表中创建一个AFTER INSERT触发器,并且要将该表的一个字段的值设置为插入时行的ID值,可以使用以下代码:

```sql

CREATE TRIGGER after_insert_trigger

AFTER INSERT ON your_table

FOR EACH ROW

BEGIN

UPDATE your_table SET some_field = NEW.id WHERE id = NEW.id;

END;

在此示例中,使用NEW.id来访问在插入后新行的ID值。

2. SELECT

SELECT是MySQL中用于检索数据的常用语句。您可以在MySQL触发器中使用SELECT来检索数据,并同时将其存储到变量中。

例如,如果您想在一个INSERT触发器中获取新行的所有字段并将这些值存储在变量中,可以使用以下代码:

```sql

CREATE TRIGGER after_insert_trigger

AFTER INSERT ON your_table

FOR EACH ROW

BEGIN

DECLARE var1 INT;

DECLARE var2 VARCHAR(50);

SELECT column1, column2 INTO var1, var2 FROM your_table WHERE id = NEW.id;

END;

在此示例中,使用SELECT将新行的列值存储到变量var1和var2中。

3. COUNT

COUNT是MySQL中用于计算行数的常用函数。在MySQL触发器中,您可以使用COUNT来计算满足特定条件的行数。

例如,如果您想将一个表中某个字段的值设置为特定条件下该表中的行数,可以使用以下代码:

```sql

CREATE TRIGGER after_insert_trigger

AFTER INSERT ON your_table

FOR EACH ROW

BEGIN

DECLARE var1 INT;

SELECT COUNT(*) INTO var1 FROM your_table WHERE some_field = NEW.some_field;

UPDATE your_table SET another_field = var1 WHERE id = NEW.id;

END;

在此示例中,使用COUNT(*)来计算满足特定条件的行数,并将该值存储在变量var1中。

以上是MySQL触发器中常用的几种取值方法。在编写触发器时,您可以根据自己的需要选择合适的方法,并使用MySQL内置函数来获取所需的值。