0

これが私のトリガーですが、このエラーが発生し続けます

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

CREATE TRIGGER check_date
    BEFORE INSERT ON rooms
    FOR EACH ROW
BEGIN
UPDATE rooms
  SET end_date = NULL, start_date = NULL, availabilty=y WHERE end_date < curdate();
END;
4

2 に答える 2

1

yおそらくテーブルの列ではありません。string を意味する場合は'y'、一重引用符で囲む必要があります。

availabilty='y'

また、空室状況にはタイプミスが含まれていることに注意してください。正しい英語のつづりはavailabilityですが、もちろん私はあなたの列名を知りません。

于 2013-06-26T06:27:50.950 に答える
1

MySql では、トリガーを適用するテーブルに対して DML ステートメントを発行することはできません。ただし、キーワードBEFOREを使用して挿入 (または更新) されているレコードの列の値 (イベントのみ) を変更できます。NEW

試す

DELIMITER $$
CREATE TRIGGER check_date
BEFORE INSERT ON rooms
FOR EACH ROW
BEGIN 
  IF NEW.end_date < CURDATE() THEN
    SET NEW.end_date = NULL, NEW.start_date = NULL, NEW.availability ='y';
  END IF;
END$$
DELIMITER ;

これがSQLFiddle のデモです。

于 2013-06-26T06:37:38.367 に答える