-1

注:最初は問題がに関係していると思っていましたが
、クエリから完全に削除しても正確なエラーが続くため、元の投稿を完全に上書きする必要があると考えました。CONCATCONCAT


トリガーを設定しようとしていますが、構文エラーが発生し続けます。
これを試したとき

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF (NEW.aka IS NULL) THEN
    SET NEW.aka = 'test value';
  END IF;
END

...このエラーが発生しました:

1064-SQL構文にエラーがあります。6行目の''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。


そしてこれを試してみると(IFペレンなしで)

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    SET NEW.aka = 'test value';
  END IF;
END

...まったく同じエラーが発生します

1064-SQL構文にエラーがあります。6行目の''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。


それ単純なものでなければなりません...しかし、私はそれを見ていません。
私はMySQL5.1.36を使用しています。
私は何が欠けていますか?
ポインタはありますか?

4

2 に答える 2

0

これを試して:

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    NEW.aka = CONCAT(NEW.fname, ' ', NEW.lname);
  END IF;
END

IF () 関数IF ステートメントには違いがあります(これを参照

于 2012-10-17T21:50:33.827 に答える
0

最初に区切り文字を変更してみてください。

DELIMITER |

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    SET NEW.aka = 'test value';
  END IF;
END|

DELIMITER ;

たぶんMySQLは最初の「;」を見ます CREATETRIGGERの終わりとして

于 2012-10-18T14:38:01.467 に答える