2017-10-26 6 views
-1

私はdbmsで新しいクエリを使用しています。また、私はMySQLを使用しています。挿入前または更新前のエラー

コード:

-> create trigger age_trigger before insert or update of age on employee 
-> for each row 
-> when(new.age <25) 
-> begin 
-> select 'Age can not be less than 25' 
-> end; 

エラー:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or update of age on employee for each row when( new.age <25) begin select 'Age c' at line 1

答えて

0

以下は、希望する結果を得るためにBEFORE INSERTを実装するオプションの1つです。

CREATE TRIGGER age_trigger 
BEFORE INSERT ON table1 
FOR EACH ROW 
BEGIN 
IF NEW.age < 25 
THEN SIGNAL SQLSTATE '45000' 
SET MESSAGE_TEXT = 'Age can not be less than 25'; 
END IF; 
END; 

同様の構文をbefore updateトリガーに使用できます。

DEMO

+0

ありがとうございました:) –

1

あなただけの独自の構文を考え出すことはできません:)

は、マニュアルを見てください:CREATE TRIGGER Syntax

複数のtrigger_eventを指定することはできません。別々の挿入トリガーと更新トリガーが必要です。そして、このof ageにもビジネスはありません。

あなたがしていることは、あなたが主張するならば、SIGNALのためのGoogleで実行することができますが、この種のロジックはアプリケーション層に置かれることが最善です。そのようなロジックをデータベースに入れないでください。

+0

大丈夫、私はその変更を行うことでしたが、現在はエラーが句ときに来ています。あなたはそれを推測できますか? –

+1

私が投稿したリンクに「WHEN」と表示されていますか?そして、私は本当にあなたのアプリケーションにそのようなロジックを置くことを強くお勧めします。また、私がGoogleに提案したマニュアルやSIGNALページにトリガーを書く例がたくさんあります。 Stackoverflowはコードを書くサービスではありません。あなたが質問をするときは、トピックについてのヒントを少なくとも持っているはずです。犯行はありませんが、あなたはそれを持っていないようです。チュートリアルや何かを参照してください... – fancyPants

+0

申し訳ありませんが、あなたの助言は私には役に立たなかった。 –

関連する問題