0

私はmysqlトリガーを初めて使用し、次の場合にトリガーを作成する方法を理解しようとしています。

次の構造のテーブルがあります。

CREATE TABLE `trigger` (
  `group` int(3) NOT NULL,
  `order` int(3) NOT NULL,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY (`group`,`order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

これは、いくつかのサンプルデータでテーブルがどのように見えるかを示しています。
ここに画像の説明を入力してください

作成するトリガーは、特定のグループで追加された新しいレコードごとに、注文フィールドが正しい注文インデックスで更新されることを確認する必要があります。

したがって、グループ1で新しいレコードを追加すると、注文フィールドは次の注文に自動的に更新されます。この例では、4になります。

4

1 に答える 1

2

トリガー内の次のステートメントでうまくいくはずです。

DECLARE neworder INTEGER;
SELECT max(`order`) + 1 INTO neworder FROM `trigger` WHERE `group` = NEW.`group`;
SET NEW.`order` = neworder;

ところで、テーブルまたは列の名前に予約語を使用することはお勧めできません。
命名スキームを再検討することをお勧めします。

于 2011-10-16T15:08:04.000 に答える