3

重複の可能性:
特定の条件下でINSERTを防止するためのMySQLトリガー

MySQLBEFORE INSERT TRIGGERで、条件付きでデータ挿入をスキップするにはどうすればよいですか?

delimiter //
drop trigger if exists test_trigger //
create trigger test_trigger before insert on t
for each row
begin
  set @found := false;

  #Some code

  if @found then
    #How to skip the data insertion under condition?
  end if;
end   //

delimiter ;
4

1 に答える 1

4

2つの解決策は、どちらもエラーを引き起こします。

  1. 存在しないストアドプロシージャを呼び出す-CALL non_existent_proc()
  2. SIGNALステートメントを使用してエラーを発生させます(MySQL5.5)。

例1:

...
IF @found THEN
  CALL non_existent_proc();
END IF;
...

例2:

...
IF @found THEN
  SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Wrong data';`
END IF;
...
于 2012-11-22T11:00:13.707 に答える