草庐IT

TRIGGERS

全部标签

php - 尝试插入同一个表并选择相同数据的最后一条记录时的 MySql 触发器

我有一个表T1,在T1上插入并使用UDF调用外部PHP程序后触发触发器,应用程序正在寻找最后插入的数据并根据条件执行操作,但它没有按预期工作。请帮助,因为我猜我们不能从触发触发器的同一个表中选择数据?是这样吗?触发DELIMITER@@CREATETRIGGERCALLAFTERINSERTONcall_testFOREACHROWBEGINDECLAREcmdCHAR(255);DECLAREresultint(10);SETcmd=CONCAT('php/var/www/html/test/call.php');SETresult=sys_exec(cmd);END;@@DELIM

mysql - 插入触发器之前的 SQL

我正在尝试创建触发器,但在某个方面遇到了麻烦。我想让触发器做的是检查插入产品的库存水平,如果库存水平=0,则触发器将阻止插入,如果水平介于两个值之间,它将允许插入但显示警告,最后如果级别高于某个值,它将不插入任何问题。我的问题是从插入中提取信息以获得触发变量@stock_level的正确值。下面我有一个将从GUI检索的示例插入语句,下面是我计划使用的触发器。我已手动将所需信息输入到触发器中,但是否可以在不对值进行硬编码的情况下提取此信息?插入语句--sampleinsertinsertintosales_tablevalues(1,2,3,4,'12/31/2015','12:30:2

mysql - 锁定通过触发器操作的表的后果?

假设我有两个表,t1和t2。t1上有一个触发器,因此在每个INSERT上都会有一个INSERT然后在t2上发生。如果我随后在t2上获得写锁,当我插入t1时会发生什么?这里有很多我很好奇的事情:我还能插入t1吗?还是会锁定?如果我可以INSERT到t1就好了,这是否意味着触发器将排队等待我UNLOCKt2?如果我在t1中插入很多东西,同时我仍然锁定t2,这对数据库的整体性能有什么影响吗?这会保持连接打开或类似的东西吗? 最佳答案 t1不会是lockedimplicitly,正如隐式锁定的文档所解释的那样,如果您进行相反的操作(锁定t1

mysql - 我可以在触发器中创建事件吗?

是否可以从触发器内部创建新事件?这不是我特别推荐的东西,但我只是想知道是否可以做到。我想触发一个插入以响应更新,但插入被延迟完成。现在,我将一个值插入到临时表中,并让预定义的事件每x分钟扫描一次该表。然而,这似乎很浪费,因为大多数时候无事可做。如果我无法创建事件,我至少可以即时启用/禁用它吗? 最佳答案 您不能从存储过程或触发器创建事件。>如果我无法创建事件,我至少可以即时启用/禁用它吗?ALTEREVENTevent1ENABLE;ALTEREVENTevent1DISABLE;CREATEEVENTSyntax

MySQL - 两个数据库之间的更新后触发器

几个小时以来一直遇到一些问题。我绝不是MySQL专家,一直在寻找解决方案但没有运气。这基本上就是我所拥有的..T1:CollectionDB.sourceindexName|status_idTest|11T2:管理控制台.MC_SCHEDULENAME|ACTIVETest|0基本上,我需要的触发器应该在T1.status_id从任意数字变为8之后运行。当它运行时,它应该找到与相应的T1.indexName匹配的T2.NAME并将ACTIVE从0更改为1。这是什么我到目前为止。DELIMITER&&CREATETRIGGER`UpdateSynch`AFTERUPDATEON`Col

mysql - 在 MySql 中创建触发器时声明变量

我在创建触发器时遇到了一点问题,因为我必须声明一些变量,然后将其中一些变量设置为0,这样它们就会开始循环增加它们的值,具体取决于条件。无论如何,我将粘贴代码及其抛出的错误,希望有人会告诉我我做错了什么。谢谢。CREATETRIGGERupdate_requestAFTERUPDATEONmedical_testsFOREACHROWBEGINDECLAREyINT,x0INT,x3INT,countingINTSETy=0,x0=0,x3=0,counting=count(SELECT*FROMmedical_testsWHEREmedical_tests.request_id=UPD

mysql - 无法将 PHPMyAdmin 的编辑例程面板用于多行程序

PHPMyAdmin在较新版本中包含一个“添加例程”和“编辑例程”面板。开发人员谈到如何使用它来编写“数百行长”的例程,但他们在演示新功能时只展示了单语句例程。https://www.youtube.com/watch?v=7ZRZoCsrKis当我开始写多个语句时,它开始给我语法错误。使用分号没有帮助。添加“开始...结束”没有帮助。我只想知道如何在例程、函数、事件和触发器中编写多条语句,以便我可以自动化我的数据库的核心功能。编辑:JeremyMiller能够回答我的问题。(https://stackoverflow.com/a/25905326/4052662)

mysql - 在 Mysql- PhpMyAdmin 中从它自己的触发器修改表

我在phpMyAdmin中使用Mysql,如果我插入具有相同主键的行,我必须从tableA中删除一个条目。我想在tableA的触发器中执行它,然后再插入例如,如果表A包含1HaiHello这里1是主键现在,如果我插入一行1ByeHello,则BEFOREINSERT触发器将删除旧条目,然后插入新行(第2行)。但是Mysql有限制,不能在为同一表定义的触发器内更新表。报错#1442-Can'tupdatetable'tableA'instoredfunction/triggerbecauseitisalreadyusedbystatementwhichinvokedthisstoredf

php - 插入表后在mysql触发器中发送http请求

我在PHP中工作。我必须创建一个mysql触发器,它在插入表后触发http请求。下面是代码。DELIMITER@@CREATETRIGGERTest_TriggerAFTERINSERTONinsertsmsFOREACHROWBEGINSET@tt_json=(SELECTjson_object(id,addtime,title)FROMinsertsmsWHEREid=NEW.idLIMIT1);SET@tt_resu=(SELECThttp_put(CONCAT('--urllocalhost--')));END;@@DELIMITER;但是我遇到了这样的错误Message:SQ

sql - 通过触发器停止对 MySQL 的删除

我正在尝试拦截针对特定表的任何DELETE命令。MySQL支持触发器,但它似乎不支持像SQLServer和其他数据库那样引发错误的方法。我可以只用一个空的触发器定义来做到这一点吗?像这样的东西:createtriggertrListsDeleteonlistsinsteadofdeleteasbegin/*Donothing*/end在SQLServer中,我可以添加一个RAISEERROR('Youcannotdeletelists.')语句来强制它失败,这样我就知道删除不会被执行。由于MySQL不支持引发错误,我如何简单地忽略Delete命令? 最佳答案