2016-12-15 14 views
1

検索用語を記録するデータベースを設定しようとしています。各検索語について検索語が存在する場合、SQLの確認を入力し、そうでない場合は、それは私が次のエラー取得しています既存のフィールドSQL IF文が機能しない - 認識できない文

IF (NOT EXISTS (SELECT * FROM searchmetrics WHERE keyword = 'keyword')) 
BEGIN 
    INSERT INTO searchmetrics(id, name, metric) 
    VALUES('', 'keyword', '1') 
END 
ELSE 
BEGIN 
    UPDATE searchmetrics 
    SET metrics = metrics + 1 
    WHERE name = 'keyword' 
END 

を更新し、真の場合には、新しいレコードを挿入します。私は

Unrecognized statement type. (near "IF" at position 0)

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

を構文を二重チェックしたところ、私には正しいように見えましたが、IFステートメントはSQLコンソールでも赤色で強調表示されていますが、唯一のようです。私がどこに間違っているのか誰にでも教えてくれますか?

+2

あなたはそれをチェックしません – Sami

+0

コードを貼り付ける際にエラーが発生しました。私はそれを更新しましたが、エラーはそのままです – djmcdee

+2

これはT-SQL(MS SQL Server)の構文に似ています。 IF構文については、https://mariadb.com/kb/en/mariadb/if-statement/を参照してください。 – Jeremy

答えて

1

MariaDBでは、IFIF()のセマンティクスが異なります。実際にIF()を使用したときにIFを使用したかったようです。

1

IFステートメントは、ストアドルーチン内にある必要があります。そうでなければ、それを働かせることはできません。

SPにある場合は、DELIMITERステートメントを含むルーチン宣言を提供してください。