gpt4 book ai didi

mysql - 记录从特定表中删除,每次留下完全相同数量的记录 (54)

转载 作者:行者123 更新时间:2023-11-29 07:22:39 26 4
gpt4 key购买 nike

好吧,我刚刚从以前的开发人员那里继承了一个项目,在我进来之前他们遇到了特定表丢失记录并且每次留下完全相同数量的记录的问题,记录被完全删除。而且我注意到代码中也有很多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'

它列出了我数据库中的所有表并检查是否存在级联删除的任何可能性,但到目前为止它返回的是空表。我经常使用 SQL,因为我是一名后端开发人员,但我不是这方面的专家。所以我真的需要一些帮助,因为每次发生它都会变得非常尴尬。这是一个 MySQL 数据库。谢谢。

最佳答案

我曾经遇到过类似的情况。我创建了一个 SQL TRIGGER 语句,在行被删除之前将行存储到另一个表中,这样:

  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

关于mysql - 记录从特定表中删除,每次留下完全相同数量的记录 (54),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com