广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    MySQL 在触发器里中断记录的插入或更新?

    2018-05-16 07:54:34 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布
    下面是一种实现的方法。思路就是想办法在触发器中利用一个出错的语句来中断代码的执行。
    mysql> create table t_control(id int primary key);
    Query OK, 0 rows affected (0.11 sec)
    mysql> insert into t_control values (1);
    Query OK, 1 row affected (0.05 sec)
    mysql> create table t_bluerosehero(id int primary key,col int);
    Query OK, 0 rows affected (0.11 sec)
    mysql> delimiter //
    mysql> create trigger tr_t_bluerosehero_bi before insert on t_bluerosehero
    -> for each row
    -> begin
    -> if new.col>30 then
    -> insert into t_control values (1);
    -> end if;
    -> end;
    -> //
    Query OK, 0 rows affected (0.08 sec)
    mysql> delimiter ;
    mysql>
    mysql> insert into t_bluerosehero values (1,20);
    Query OK, 1 row affected (0.25 sec)
    mysql> insert into t_bluerosehero values (2,40);
    ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
    mysql>
    mysql> select * from t_bluerosehero;
    +----+------+
    | id | col |
    +----+------+
    | 1 | 20 |
    +----+------+
    1 row in set (0.00 sec)
    mysql>
    或者
    mysql> delimiter //
    mysql> create trigger tr_t_bluerosehero_bi before insert on t_bluerosehero
    -> for each row
    -> begin
    -> declare i int;
    -> if new.col>30 then
    -> insert into xxxx values (1);
    -> end if;
    -> end;
    -> //
    Query OK, 0 rows affected (0.06 sec)
    mysql> delimiter ;
    mysql> delete from t_bluerosehero;
    Query OK, 3 rows affected (0.05 sec)
    mysql> insert into t_bluerosehero values (1,20);
    Query OK, 1 row affected (0.06 sec)
    mysql> insert into t_bluerosehero values (2,40);
    ERROR 1146 (42S02): Table 'csdn.xxxx' doesn't exist
    mysql>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告