ストアド プロシージャを使用して NEW トリガー値を設定するにはどうすればよいですか? たとえば、myTable に挿入する前に、myTable.someColumn の NEW 値を特定の値に設定したいと考えています。そうしようとすると、プロシージャを作成しようとすると 1193 エラーが発生します。ありがとうございました
DELIMITER $$
CREATE PROCEDURE `myProc` ()
BEGIN
//How do I set NEW.someColumn of myTable?
SET NEW.someColumn=123;
END$$
CREATE TRIGGER myTrig BEFORE INSERT ON myTable FOR EACH ROW
BEGIN
//SET NEW.someColumn=123; //This works, but I want to do the setting within the stored procedure
CALL myProc();
END$$
DELIMITER ;
INSERT INTO myTable(id,data) VALUES (1,"hello");
//Above "should" really do INSERT INTO myTable(id,data,someColumn) VALUES (1,"hello",123);
1193 - 不明なシステム変数 'someColumn'
編集。以下が機能します。
DELIMITER $$
CREATE PROCEDURE `myProc` (INOUT myID int)
BEGIN
SET myID =123;
END$$
CREATE TRIGGER myTrig BEFORE INSERT ON myTable FOR EACH ROW
BEGIN
CALL myProc(NEW.someColumn);
END$$
DELIMITER ;