我想写一个触发器。 触发工作在以下方式:根据If条件在Mysql触发器中使用Select INTO语句
当表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
这有什么错的语法?我是否需要声明我用于插入的表名称?谢谢。
CREATE TRIGGER trigger_after_published INSERT后R_published FOR EACH ROW BEGIN IF(NEW.whichPublishable = 1)THEN INSERT INTO R_publishedGoodReads SELECT * FROM project_task_goodread_master WHERE goodReadID = new.publishedItemId; ELSEIF(NEW.whichPublishable = 2)THEN INSERT INTO R_publishedDocuments SELECT * FROM project_document_master 其中 documentID = new.publishedItemId; END IF END; – Rujuta 2012-02-01 17:42:28
它仍然给我folliwing错误:#1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第11行的''附近使用正确的语法。 – Rujuta 2012-02-01 17:43:55
不确定第11行是否正确,但尝试明确列出要插入的列名。 'INSERT INTO R_publishedGoodReads(COL1,COL2)SELECT COL1,col2'而非'INSERT INTO R_publishedGoodReads SELECT *' – Bort 2012-02-01 17:46:38