MySQL ДО ВСТАВКИ Триггер Выбрать в несколько переменных? - PullRequest
2 голосов
/ 17 ноября 2009

Я пытаюсь написать триггер в MySQL, и мне нужно установить значения нескольких переменных. Значения, которые мне нужно поместить в эти переменные, взяты из строки в существующей таблице (не беспокойтесь о нескольких строках, будет только одна):

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;

Однако триггеры не позволяют выбирать результаты (которые мне не нужны). Итак, когда я запускаю скрипт создания, он выдает мне эту ошибку:

Не разрешено возвращать набор результатов. от триггера.

1 Ответ

7 голосов
/ 17 ноября 2009

Полагаю, вам просто нужно изменить свои утверждения как на утверждения.

UPDATE: Как Билл исправил меня ниже, оператор INTO форматируется больше как оператор вставки, т.е. список столбцов INTO список значений.

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

Спасибо, Билл. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...