MySQL视图插入触发器事件插入错误

时间:2018-06-14 20:02:26

标签: mysql view triggers insert

我有这个观点。

CREATE OR REPLACE VIEW `Registry`.`vOrganization` AS 
             SELECT ro.user_id,
                ro.name AS fantasy_name,
                ro.state_registration,
                ro.county_registration,
                ro.reference,
                ru.name,
                ru.document,
                ru.id,
                ru.password,
                ru.cep,
                ru.street,
                ru.number,
                ru.complement,
                ru.district,
                ru.city_id
             FROM `Registry`.`User` ru
                JOIN `Registry`.`Organization` ro ON ru.id = ro.user_id
             WHERE length(ru.document) = 14;

这适用于insert语句,但是我只需要创建组织user_id insert,为此我在User表上创建了一个触发器:

 DROP TRIGGER `Registry`.`AfterVOrganizationInsert`;

             DELIMITER //
             CREATE TRIGGER `Registry`.`AfterVOrganizationInsert`
             AFTER INSERT
                ON `Registry`.`User` FOR EACH ROW
             BEGIN
                IF(length(NEW.document) = 14) THEN
                    INSERT INTO `Registry`.`Organization` (user_id) VALUES ( NEW.id );
                END IF;
             END; //
             DELIMITER ;

当在此View中运行插入时收到错误:

 SQLSTATE[HY000]: General error: 1442 Can't update table 'Organization' in stored function/trigger beca  
 use it is already used by statement which invoked this stored function/trigger.     

如何进行?我不能直接在User表上插入,并且视图必须返回文档长度为14的所有用户,我尝试使用左连接,可以正常选择,但不能使用insert。

我无法直接插入User表的原因是我们正在从postgres迁移到MySQL并且整个系统以这种方式工作,因为在postgres中我们可以使用而不是在视图上插入。

0 个答案:

没有答案