小编flo*_*len的帖子

您如何看待这种在mysql中记录更改并具有某种审计跟踪的方法

我现在已经阅读了几个主题并做了一些关于将更改记录到mysql表的研究.首先让我解释一下我的情况:

我有一张带桌子的票务系统:'票'

截至目前,我已经创建了触发器,它将在我的表中输入一个重复的条目:'ticket_history',其中"action" "user""timestamp"作为附加列.经过几周的测试和测试后,我对这个版本感到不满,因为每次更改都会在历史记录表中创建我的行的完整副本.我确实知道磁盘空间很便宜,我不应该担心它,但是为了找回用户的某种日志或漂亮的历史是痛苦的,至少对我来说是这样.还有我写过的触发器,即使没有变化,我也会在历史记录中获得新的一行.但这只是我触发器的设计缺陷!

这是我的触发器:

BEFORE UPDATE ON ticket FOR EACH ROW
BEGIN
INSERT INTO ticket_history
SET
    idticket = NEW.idticket,
    time_arrival = NEW.time_arrival,
    idticket_status = NEW.idticket_status,
    tmp_user = NEW.tmp_user,
    action = 'update',
    timestamp = NOW();
END
Run Code Online (Sandbox Code Playgroud)

我的新方法是为了避免触发器

在花了一些时间讨论这个话题之后,我想出了一个我想讨论和实现的方法.但首先我会对此有一些疑问:

我的想法是创建一个新表:

    id   sql_fwd        sql_bwd      keys      values    user       timestamp
    -------------------------------------------------------------------------
    1    UPDATE...      UPDATE...    status    5         14          12345678
    2    UPDATE...      UPDATE...    status    4         7           12345678
Run Code Online (Sandbox Code Playgroud)

在我看来,流程看起来像这样:

首先,我会从数据库中选择一些或更多内容:

SELECT keys FROM ticket; …

php mysql database audit-trail

12
推荐指数
1
解决办法
310
查看次数

在5个最近的位置搜索邮政编码 - 我该怎么办?

我想要的是:

  1. 用户传递邮政编码或城市名称
  2. 我在我的数据库中搜索最近的5个位置
  3. 向用户显示该位置附近的5个最近位置

到目前为止我所拥有的:

让我们说一个包含以下内容的地方表:

(约16000行)

CREATE TABLE `locations` (
 `locationID` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(150) NOT NULL,
 `firstname` varchar(100) DEFAULT NULL,
 `lastname` varchar(100) DEFAULT NULL,
 `street` varchar(100) NOT NULL,
 `city` varchar(100) NOT NULL,
 `state` varchar(100) NOT NULL,
 `zipcode` varchar(10) NOT NULL,
 `phone` varchar(20) NOT NULL,
 `web` varchar(255) DEFAULT NULL,
 `machine` enum('Unbekannt','Foo','Bar') DEFAULT 'Unbekannt',
 `surface` enum('Unbekannt','Foo','Bar','') DEFAULT 'Unbekannt',
 PRIMARY KEY (`locationID`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
  1. ID
  2. 名称
  3. 邮政编码

现在我有了世界上所有城镇的第二张桌子:

(约340万行)

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

mysql sql innodb stored-procedures

6
推荐指数
1
解决办法
409
查看次数

标签 统计

mysql ×2

audit-trail ×1

database ×1

innodb ×1

php ×1

sql ×1

stored-procedures ×1