我有一个创建表的过程,是否可以有一个可以调用该过程然后从表中进行选择的视图(或类似视图)?
我试过这个:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `new_routine`(p1 INT) RETURNS int(1)
BEGIN
CALL rMergeDateFields();
RETURN 1;
END
CREATE VIEW `db`.`vIntervals` AS
SELECT new_routine(0) AS col1;
SELECT * FROM MergedData;
但我收到这个错误
错误 1422:存储函数或触发器中不允许显式或隐式提交。
有任何想法吗?
你不能。意见是通常只读操作;如果调用存储过程,则无法保证该行为。
相关问题:
如何在视图中调用存储过程? https://stackoverflow.com/questions/916784/how-to-call-stored-procedure-in-a-view
是否可以在视图中调用存储过程? https://stackoverflow.com/questions/5799489/is-it-possible-to-call-stored-procedure-in-view
这是一个规范资源:
http://dev.mysql.com/doc/refman/5.1/en/view-updatability.html http://dev.mysql.com/doc/refman/5.1/en/view-updatability.html
一些视图是可更新的。也就是说,您可以在 UPDATE、DELETE 或 INSERT 等语句中使用它们来更新基础表的内容。为了使视图可更新,视图中的行和基础表中的行之间必须存在一对一的关系。还有某些其他结构使视图不可更新。
由于调用存储过程不能保证与视图行的 1:1 关系,因此不允许更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)