2014-10-20 81 views
0

我写了一个触发器INSERT AFTER:,其中I在SELECTJOIN之内。带有SELECT/JOIN的触发器插入

DROP TRIGGER IF EXISTS `InsertArticle`; 
DELIMITER // 
CREATE TRIGGER `InsertArticle` AFTER INSERT ON `article` 

FOR EACH ROW 
    insert into log (LogTime, LogIdNote, LogName, LogType, LogIdUser, logTypeCategory, LogTypeUser, LogUrl) 
    select NEW.ArticleTime, NEW.idArticle, NEW.ArticleName, 1, NEW.ArticleToUserID, NEW.ArticleCategory, u.UsersTypeAccount, ct.URLCategorysubscribetotype 
    from users u where u.idUsers = NEW.ArticleToUserID LEFT JOIN categorysubscribetotype ct ON ct.CategoryTypeCategorysubscribetotype = 1; 
END 
// 
DELIMITER ; 

当我试图创建触发器,我得到错误1422。 可能是我有一个错误的触发sintax?

回答

1

试试这个:

DROP TRIGGER IF EXISTS `InsertArticle`; 
DELIMITER // 
CREATE TRIGGER `InsertArticle` AFTER INSERT ON `article` 

FOR EACH ROW 
    insert into log (LogTime, LogIdNote, LogName, LogType, LogIdUser, logTypeCategory, LogTypeUser, LogUrl) 
    select NEW.ArticleTime, NEW.idArticle, NEW.ArticleName, 1 as LogType, NEW.ArticleToUserID, NEW.ArticleCategory, u.UsersTypeAccount, ct.URLCategorysubscribetotype 
    from users u LEFT JOIN categorysubscribetotype ct ON ct.CategoryTypeCategorysubscribetotype = 1 where u.idUsers = NEW.ArticleToUserID; 
END 
// 
DELIMITER ; 
+0

有错误太 – Elhan 2014-10-20 08:39:38

+0

显式或隐式提交在存储函数或触发器是不允许的。 #1422 – Elhan 2014-10-20 09:38:23

+0

可能是Mysql不支持? – Elhan 2014-10-20 18:06:50