mysql - 插入触发器后创建 View

标签 mysql stored-procedures triggers view

我有两个表公司 (id,company_name) 和用户 (id,company_id,user_name);

现在我想在公司表中插入数据时创建一个 View 。

我使用了以下两种方法,但在两种情况下都出现了相同的错误。错误是:

#1422 - Explicit or implicit commit is not allowed in stored function or trigger. 

第一个查询是:

DELIMITER $$
CREATE TRIGGER testInsert 
    AFTER INSERT ON companies
    FOR EACH ROW BEGIN

   CREATE VIEW test(user_name) AS 
    SELECT user_name
    FROM users;
END$$
DELIMITER ;

然后我尝试先创建过程,然后像这样在触发器中调用该过程

create procedure createView() 
 create view vt as select * from users; 


 CREATE TRIGGER `testInsert3` AFTER INSERT ON `companies`
FOR EACH ROW
BEGIN
   CALL createView();
END;

请大家帮帮我。

谢谢大家

最佳答案

    please refer this link, i think this will help you

    http://stackoverflow.com/questions/16256250/create-view-in-a-trigger


try creating the view like this 


DELIMITER $$
CREATE TRIGGER testInsert 
    AFTER INSERT ON companies
    FOR EACH ROW BEGIN

   EXECUTE('CREATE VIEW test(user_name) AS SELECT user_name
    FROM users')
END$$
DELIMITER ;

关于mysql - 插入触发器后创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31823949/

相关文章:

sql - SQL Server存储过程-插入语法错误

mysql - 如何在存储过程中编写多个select语句?

mysql - 在插入或更新时获取完整的 MySQL 查询字符串

sql - Postgres 触发器检查日期是否与现有记录重叠

Mysql 触发器 - 如何仅在特定行上触发

mysql - 对重复键进行 INSERT 和 UPDATE

mysql - GRANT USAGE to @user'%' 是否可以为特定列表工作?

php - Laravel 4 数据表集成

javascript - 在node-express应用程序中使用node-mysql建立共享连接

sql - 创建对两个列组合MSSQL的约束