3

3 つのフィールドを持つテーブルがあり、そのうちの 1 つは「ステータス」です。status は、内容が「a」、「b」、または「c」の ENUM です。

"status" = 'b' を持つすべての行の更新を拒否する方法を見つける必要があります。root ユーザーでさえこれらの行の更新を許可されるべきではありません。したがって、この行を「最終」にするようなものです。status = a または status = c の場合、更新を許可する必要があります。

これを行う方法はありますか?ありがとう!

4

1 に答える 1

2

このトリガーを使用できます-

DELIMITER $$

CREATE TRIGGER trigger1
  BEFORE UPDATE
  ON table1
  FOR EACH ROW
BEGIN
  IF OLD.status = 'b' THEN
    SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Cannot update value';
  END IF;
END
$$

DELIMITER ;

too ユーザーの悩みを知っていて、彼に更新を許可したい場合は、この条件を使用できます -

...
IF CURRENT_USER() <> 'root@localhost' AND OLD.status = 'b' THEN
  SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Cannot update value';
END IF;
...
于 2012-11-22T13:08:17.790 に答える