我们在几个表上有一个简单的审计系统。这一切都很好,但每隔一段时间,我们就会在导致触发器触发的操作中遇到这样的错误:java.sql.SQLException:存储函数或触发器中不允许显式或隐式提交。不幸的是,我们无法弄清楚我们的触发器如何导致提交。这些是(有时)导致错误的触发器:CREATETRIGGER`my_schema`.`fileDescriptorInsertTrigger`AFTERINSERTON`my_schema`.`FILE_DESCRIPTOR`FOREACHROWinsertinto`AUDIT_EVENT`(`applicationId`,`classifie
文档说Therecannotbetwotriggersforagiventablethathavethesametriggeractiontimeandevent.我使用mysql5.5.16。我创建了两个触发器。upd_check1和sale_tri。我确定我的两个触发器在INSERT事件上执行两个不同的表。但是为什么我在两个触发器中都会收到此错误。当我尝试导出数据库时(phpmyadmin不显示错误,但mysqlworkbench、heidisql、查询浏览器显示错误)。SQLError(1235):ThisversionofMySQLdoesn'tyetsupport'multi
我有一个插入触发器,它从表A的行中获取一组列值,并将其中一些插入表B并保留在表C中。我需要这个操作是一个事务,其中如果数据出现错误插入到表B而不是C,整个插入操作应该回滚。我研究了手册,它在this的最后说触发器中不允许事务的页面有没有办法在mysql中实现我想要的。 最佳答案 是的,你可以,但你如何做取决于你的版本。首先,触发器本身是事务性的;在您的情况下,您有一个插入触发器可以执行两个进一步的插入。如果其中之一失败,您将获得想要的效果。考虑以下示例:CREATETABLEa(colAINT);CREATETABLEb(colBI
我正在MySQL中创建一个触发器,让我知道谁(哪个mysql用户)正在对特定表进行更新。我知道MySQL有一个函数CURRENT_USER(),但是它是在创建触发器时插入用户名,还是在调用触发器时插入用户名?到目前为止,这是我的触发器。我想在“内容”列中插入用户名。delimiter|CREATETRIGGERupdate_product_procedureBEFOREUPDATEONproduct_procedureFOREACHROWBEGININSERTINTOtrigger_logsSETcontent='Thisisatest',postDate=NOW();END;|
我似乎无法创建触发器。我已经尝试了以下两种更新方式。我不断收到插入语句的语法错误。我搜索了过去4小时的论坛和网络搜索,没有任何变化。这里有更多的代码,它基本上是重复的。任何帮助,将不胜感激。谢谢你。我正在运行MySQL5.0并以管理员/Root身份通过phpMyAdmin2.8.2.4进行访问。尝试1(在所有字段和名称上使用和不使用引号)CREATETRIGGERinsert_classesAFTERinsertONClassesFOREACHROWBEGINinsertintoinsert_tracking_classes(classID,Title,classDesc,Catego
有没有办法在MySQL触发器中检索事务ID? 最佳答案 目前,no.四年来一直是一个公开请求。但是,您可以使用connection_id()这将提供连接session,因此您可以按此对事物进行分组。 关于mysql-MySQL触发器中的事务ID,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1278636/
我有两个innodb表:文章id|title|sum_votes------------------------------1|art1|52|art2|83|art3|35投票id|article_id|vote------------------------------1|1|12|1|23|1|24|2|105|2|-26|3|107|3|158|3|129|3|-2当一条新记录插入到votes表中时,我想更新articles表中的sum_votes字段,方法是计算所有投票。问题如果SUM()计算本身很重(votes表有700K条记录),哪种方式更有效。1。创建触发器CREATE
我试图找出一个触发器,将插入时自动生成的自动递增“ID”主键字段的值分配给另一个字段“Sort_Placement”,以便它们在插入后相同。如果您想知道我为什么这样做,'Sort_Placement'用作表格中的排序值,可以更改但默认情况下记录添加到表格的底部表格数据`ID`mediumint(8)unsignedNOTNULLAUTO_INCREMENT,`Account_Num`mediumint(8)unsignedNOTNULL,`Product_Num`mediumint(8)unsignedNOTNULL,`Sort_Placement`mediumint(8)unsign
这个问题在这里已经有了答案:Triggerscloudsql2ndgeneration(3个答案)关闭5年前。CREATETRIGGERtrigger_LocationType_InsertBEFOREUPDATEONLocationTypeFOREACHROWSETNEW.NAME=''返回此错误:[HY000][1419]您没有SUPER权限并且启用了二进制日志记录(您*可能*想要使用不太安全的log_bin_trust_function_creators变量)我知道这是因为即使是root用户也“拥有除SUPER和FILE之外的所有权限”。https://cloud.google.
我真的不能编辑MySQL触发器,我必须删除它并创建一个新触发器吗?此外,作为触发器的新手,感觉它们似乎容易导致“错误”数据。例如,我可能希望在一种特定类型的更新查询之后触发触发器(将数据插入另一个表),而不是其他类型。感谢收到这里的任何提示! 最佳答案 编辑:是的,MySQL5&6的5.n和6.n版本确实实现了CREATETRIGGER和DROPTRIGGER没有别的。根据thishunkofPostgresdocumentation,甚至没有CREATETRIGGER在SQL92中,所以认为自己很幸运拥有TRIGGER:-)Vis