每次都从特定表中删除记录,每次剩下的记录数量都完全相同(54条)。

25 浏览
0 Comments

每次都从特定表中删除记录,每次剩下的记录数量都完全相同(54条)。

好的,我刚刚继承了一个之前开发人员的项目,在我加入之前,他们遇到了一个问题,就是一个特定的表会丢失记录,每次丢失的记录数都完全相同,记录将被完全删除。我还注意到代码中有很多DELETE语句,但是我找不到删除记录的脚本。

目前我每天运行两次CRON作业来备份数据库。

我使用以下SQL检查CASCADE DELETE:

USE information_schema;

SELECT

table_name

FROM

referential_constraints

WHERE

constraint_schema = 'my_database_name'

AND referenced_table_name IN

(SELECT table_name

FROM information_schema.tables

WHERE table_schema ='my_database_name')

AND delete_rule = 'CASCADE'

它列出了我的数据库中的所有表,并检查是否存在CASCADE DELETE的可能性,但是到目前为止返回为空。

我经常使用SQL,因为我是一名后端开发人员,但我不是专家。所以我真的需要一些帮助,因为每次发生这种情况都很尴尬。这是一个MySQL数据库。谢谢。

0
0 Comments

最近我遇到了一个类似的情况。我创建了一个SQL触发器语句,在删除记录之前将这些行存储到另一个表中,这样做的好处是:

  1. 每次发生这种情况时,我能够恢复丢失的数据。
  2. 我能够研究被删除的行,并且这些信息有助于解决问题。

下面是一个备份被删除记录的示例:

CREATE TABLE `history_table` LIKE `table`;
ALTER TABLE `history_table`
MODIFY COLUMN `id` INT UNSIGNED NOT NULL;
ALTER TABLE `history_table` DROP PRIMARY KEY;
DELIMITER $$
CREATE TRIGGER `deleted_table` BEFORE DELETE on `table`
FOR EACH ROW
BEGIN
    INSERT INTO history_table
    SELECT *
    FROM table
    WHERE id = OLD.id;
END$$
DELIMITER ;

恢复表的方法如下:

INSERT INTO table
    SELECT * FROM history_table

0