1

次のトリガーがあります。

CREATE DEFINER=root@localhost TRIGGER after_insert_student after INSERT ON 
students FOR EACH ROW BEGIN 
    SET @NEWID := NEW.ID ;
if @NEWID IS NOT NULL THEN     
     INSERT INTO students SET ID = @NEWID;
else
     INSERT INTO students SET ID = 001;
END IF
END

エラー:

エラー コード: 1442。このストアド関数/トリガーを呼び出したステートメントで既に使用されているため、ストアド関数/トリガーのテーブル 'students' を更新できません。

4

4 に答える 4

0

問題は、次のようなステートメントを記述できないことです

INSERT INTO students SET ID = @NEWID;

挿入する列を知る必要があるため、または列が指定されていない場合は、すべての列の値などに挿入するためです。

INSERT INTO students values (@NEWID);

動作するはずです。または、自分に固執したい場合は、SET ID次のようなものを書いてみてください

UPDATE students SET ID = @NEWID;

これが問題の解決につながることを願っています。

于 2015-10-22T06:16:52.110 に答える