开发者

MySQL BEFORE INSERT Trigger Select Into Multiple Variables?

I'm trying to write a trigger in MySQL and I need to set the values of several variables. The values I need to put into these variables are from a row in an existing table (not worried about multiple rows, there will only be one):

DELIMITER |

CREATE TRIGGER ins_move_to_hist BEFORE INSERT ON EndOfDay
FOR EACH ROW
BEGIN
 DECLARE _RowsMatching int;
 DECLARE _EodId  int(10) unsigned;
  DECLARE _Open  decimal(6,4);
  DECLARE _High  decimal(6,4);
  DECLARE _Low   decimal(6,4);
  DECLARE _Close  decimal(6,4);
  DECLARE _Volume  int(10) unsigned;
  DECLARE _mtime  datetime;

 SELECT _RowsMatching = Count(*), 
  EodId as开发者_运维技巧 _EodId, 
  Open as _Open,
  High as _High,
  Low as _Low,
  Close as _Close,
  Volume as _Volume,
  mtime as _mtime
 from EndOfDay 
 where DateId = NEW.DateId
  and TickerId = NEW.TickerId;

However, Triggers don't allow for Selecting results (which I don't need). So, when I run the create script it gives me this error:

Not allowed to return a result set from a trigger.


I believe you simply need to change your as statements to into statements.

UPDATE: As Bill corrected me below, the INTO statement is formatted more like the insert statement, ie; column list INTO value list.

SELECT Count(*), EodId, Open, High, Low, Close, Volume, mtime 
INTO _RowsMatching, _EodId, _Open, _High, _Low, _Close, _Volume, _mtime
...

Thanks, Bill. ;)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜