【问题标题】:MySQL delete data without query?MySQL删除数据而不查询?
【发布时间】:2013-02-02 01:09:56
【问题描述】:

我有一个客户正在描述从 Web 表单添加新数据时发生的事件。如果提交的数据与任何现有的数据库条目匹配,系统将删除现有的条目。

我检查了脚本,但没有看到会影响相关表的 DELETE 查询。有 UPDATE 查询,它们都不影响数据库中指示删除或标记为已删除的字段。

如果不执行 DELETE 查询,是否会丢失数据?

按照要求,这里是“创建表”语句:

CREATE TABLE `msp_zip_codes` 
(
     `zip_code` varchar(5) DEFAULT NULL,
     `city` varchar(35) DEFAULT NULL,
     `state_prefix` varchar(2) DEFAULT NULL,
     `county` varchar(45) DEFAULT NULL,
     `area_code` varchar(45) DEFAULT NULL,
     `CityType` varchar(1) DEFAULT NULL,
     `CityAliasAbbreviation` varchar(13) DEFAULT NULL,
     `CityAliasName` varchar(35) DEFAULT NULL,
     `lat` decimal(18,6) DEFAULT NULL,
     `lon` decimal(18,6) DEFAULT NULL,
     `time_zone` varchar(7) DEFAULT NULL,
     `Elevation` int(10) DEFAULT NULL,
     `CountyFIPS` varchar(5) DEFAULT NULL,
     `DayLightSaving` varchar(1) DEFAULT NULL,
     `PreferredLastLineKey` varchar(25) DEFAULT NULL,
     `ClassificationCode` varchar(2) DEFAULT NULL,
     `MultiCounty` varchar(1) DEFAULT NULL,
     `StateFIPS` varchar(2) DEFAULT NULL,
     `CityStateKey` varchar(6) DEFAULT NULL,
     `CityAliasCode` varchar(5) DEFAULT NULL,
     `PrimaryRecord` varchar(50) DEFAULT NULL,
     `CityMixedCase` varchar(50) DEFAULT NULL,
     `CityAliasMixedCase` varchar(50) DEFAULT NULL,
     KEY `AreaCode` (`area_code`),
     KEY `CityAliasCode` (`CityAliasCode`),
     KEY `CityStateKey` (`CityStateKey`),
     KEY `ClassificationCode` (`ClassificationCode`),
     KEY `PreferredLastLineKey` (`PreferredLastLineKey`),
     KEY `ZipCode` (`zip_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

【问题讨论】:

  • 您使用的是什么编程语言或框架?
  • 如果您可以发布查询,我们可以检查。或者,您的表上可能有一个触发器。
  • cakePHP - 有很多查询,不过我可以选择性地发布它们。
  • 请发布表创建语句。很有可能这是一个独特的约束。
  • 启用二进制日志或通用日志。它将记录服务器执行的所有语句。在那里寻找你的删除。

标签: mysql sql database sql-delete


【解决方案1】:

其中一种可能性是该表有一个 UPDATE TRIGGER 集,每次有更新时都会触发。或者另一个,有一个Event Scheduler 在服务器上运行。

显示数据库上所有触发器的代码:

SELECT * 
FROM   INFORMATION_SCHEMA.TRIGGERS a
WHERE  a.TRIGGER_SCHEMA LIKE CONCAT('%', 'databaseNameHERE', '%')

显示数据库上所有事件的代码:

SHOW EVENTS FROM databaseNameHERE;

【讨论】:

  • 感谢这两个查询。每个结果都是空白的。
  • @ypercube 我在查询中使用了正确的数据库名称,但感谢您的检查。
  • 这样做了,必须查看他们真实的实时服务器而不是开发服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多