Использование оператора Select INTO в Mysql Trigger на основе условия If - PullRequest
1 голос
/ 01 февраля 2012

Я хочу написать триггер.Триггер работает следующим образом:

Когда таблица R_published получает новую запись, основываясь на значении столбца в записи (R_published.whichPublishable), ему необходимо скопировать строку либо из таблицы project_task_goodread_master, либо из таблицы project_document_master.в таблицы R_publishedGoodReads ИЛИ R_publishedDocuments соответственно.

Я записал следующий триггер и получаю сообщение об ошибке: "# 1327 - Необъявленная переменная: R_publishedGoodReads"

CREATE TRIGGER trigger_after_published

    AFTER INSERT ON R_published

    FOR EACH ROW

    BEGIN

    IF (NEW.whichPublishable=1) THEN

        SELECT *  INTO R_publishedGoodReads FROM project_task_goodread_master 
WHERE

 goodReadID= new.publishedItemId;

    ELSEIF (NEW.whichPublishable=2) THEN 

      SELECT * INTO R_publishedDocuments FROM project_document_master where 

 documentID=new.publishedItemId;

      END IF 

END 

Что-то не так?с синтаксисом?Нужно ли объявлять имя таблицы, которую я использую для вставки?Благодарю.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Попробуйте вместо:

IF (NEW.whichPublishable=1) THEN
    INSERT INTO R_publishedGoodReads (col1, col2...)
    SELECT col1, col2... FROM project_task_goodread_master 
    WHERE goodReadID= new.publishedItemId;
0 голосов
/ 01 февраля 2012

MySQL не поддерживает SELECT ... INTO TABLE.См. Документация MySQL

...