mysqlトリガーの簡単なアプリケーション

  • 要件の説明
    仕事はそのような要件に遭遇します。2つのテーブルがあります。1つはユーザーの基本情報テーブルです。ユーザーの基本情報テーブルには結婚するかどうかのフィールドがあります。1つは、子テーブル、配偶者テーブル、親テーブル、および家族関係テーブルのユーザーに関連するその他の情報があり、これらはフィールド相対によって区別されます。配偶者を削除するときは、ユーザーテーブルに配偶者フィールドがあるかどうかを更新する必要があります。実際、コードを使用することもできますが、トリガーの使用はより簡潔で効率的な処理です。オンラインプロジェクトでは公式時計を直接表示しないため、実際の時計をシミュレートすることで関係を確立します。
  • テーブルリレーションシップを作成する

配偶者テーブル

CREATE TABLE `tb_mate` (
  `id` bigint(20) NOT NULL,
  `pk_userId` bigint(20) DEFAULT NULL,
  `relative` varchar(20) DEFAULT NULL COMMENT '1=配偶关系 0=其他关系',
  `name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `dr` int(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ユーザーテーブル

CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL,
  `dr` int(1) DEFAULT NULL COMMENT '删除标示',
  `name` varchar(20) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `flag` smallint(6) DEFAULT NULL COMMENT '配偶标示0 没有 1 有',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

トリガーロジック:この配偶者テーブルを
更新するとき、dr = 1で、この配偶者を削除すると、ユーザーテーブルの配偶者フィールドが0に更新されるかどうかがトリガーされます
。dr= 0の場合、ユーザーテーブルの配偶者フィールドは1にトリガーされるため、トリガーステートメントの作成は次のとおりです。

  • トリガーを作成する
DELIMITER $$
CREATE
    
    TRIGGER `upd_info` AFTER UPDATE ON `tb_mate` 
    FOR EACH ROW BEGIN 
IF(new.relative = 1)
THEN
      UPDATE tb_user SET flag = !new.dr 
      WHERE id = new.pk_userId;
 
END IF;
END;

概要:実際のテストによると、挿入の更新に関係なく、(後/前の)トリガーはトランザクションに関連しています。コードにエラーが関連付けられている場合、トリガーもロールバックします。

おすすめ

転載: blog.csdn.net/qq_29897369/article/details/103847358