【问题标题】:check if the select statement contain a text and then change it with another检查选择语句是否包含文本,然后用另一个更改
【发布时间】:2013-02-09 19:20:20
【问题描述】:

我是 MySql 的新手 ^_^,

我正在使用一个名为 GLPI 的现有开源,他们使用的是 MVC 方法,所以我发现编辑主代码非常困难,这就是为什么我决定发布这个问题,如果我可以从 MySql 更改选择语句而是。

所以我需要知道如果有任何操作包含(

SELECT * FROM `glpi_tickettemplates` WHERE `id` = '-2' 

)

然后用 (

SELECT * FROM `glpi_tickettemplates`  WHERE `id` = '1' 

)

提前致谢

【问题讨论】:

  • 我认为没有开箱即用的方法,不。为什么你首先需要这样做?这应该在应用程序级别而不是在数据库中修复
  • 我正在使用一个名为 GLPI 的现有开源,他们使用的是 MVC 方法,所以我发现编辑主代码非常困难
  • 就像 Pekka 所说的,您需要在应用程序级别而不是数据库级别修复它。如果您确实需要它,您可以覆盖 MVC 默认行为(尽管不建议新手使用)。尝试找出模型并在该模型中创建一个方法,然后在您刚刚创建的该方法中输入 sql。然后,您可以即时调用该方法来运行上面的 sql。
  • @Autolycus tnks,你能说得更具体点吗?

标签: php mysql sql triggers


【解决方案1】:

根据您的问题,您似乎只需要一个特定行,所以为什么不将 id='-2' 的行复制到 id='1' 的行中然后

DELIMITER $$
CREATE TRIGGER myTrigger AFTER UPDATE ON `glpi_tickettemplates`
CREATE TEMPORARY TABLE `tempTable` 
AS 
SELECT * FROM `glpi_tickettemplates` WHERE id='-2'; 
UPDATE `tempTable` SET id='1' WHERE id='-2';
REPLACE INTO `glpi_tickettemplates` SELECT * FROM `tempTable`;
DROP TEMPORARY TABLE `tempTable`; 
DELIMITER;

更新:

如果您想在所有传入查询中将每个id='-2' 替换为id='-1',请查看MySQL Proxy

MySQL Proxy 是一个简单的程序,位于您的客户端和 MySQL 服务器之间,可以监控、分析或转换它们的通信。

它的灵活性允许无限使用;常见的有:

  • 负载均衡
  • 故障转移
  • 查询分析
  • 查询过滤和修改

还有更多。

http://forge.mysql.com/wiki/MySQL_Proxy,您可以找到安装、使用和运行 MySQL Proxy 的所有链接。

【讨论】:

  • tnks @FatDog47 ,这是行不通的,因为在应用程序中他们使用 (id='-2') 调用记录,所以我需要 MySQL 中的一些东西可以查看是否有使用 ( id='-2' ) 进行操作,然后使用 ( id='1' ) 进行更改,然后发送
  • 那么您唯一的解决方案是 launchpad.net/mysql-proxy 。 MySQL-proxy 位于您的应用程序和 MySQL 之间,可以对传入的查询执行分析和修改。
猜你喜欢
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多