- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试找出一种方法来做类似 Delete all records except the most recent one? 的事情但我一直无法将其应用于我的情况。
我的情况: https://gyazo.com/178b2493e42aa4ec4e1a9ce0cbdb95d3
SELECT * FROM dayz_epoch.character_data;
CharacterID, PlayerUID, InstanceID, Datestamp, LastLogin, Alive, Generation
5 |76561198068668633|11|2016-05-31 18:21:37|2016-06-01 15:58:03|0|1
6 |76561198068668633|11|2016-06-01 15:58:20|2016-10-08 21:30:36|0|2
7 |76561198068668633|11|2016-10-08 21:30:52|2016-10-09 18:59:07|1|3
9 |76561198010759031|11|2016-10-08 21:48:32|2016-10-08 21:53:31|0|2
10|76561198010759031|11|2016-10-08 21:53:55|2016-10-09 19:07:28|1|3
(看上图)所以我目前正在尝试为我的 DayZ Epoch 服务器创建一个更好的方法来从我的数据库中删除尸体。如果同一个 PlayerUID 有另一个 ALIVE = 1 的实例,我需要一个代码来删除 Where ALIVE = 0。
代码可以做的另一件事是删除除每个 PlayerUID 的最近玩家之外的所有玩家。我希望这是有道理的。很难解释。第一个链接对我来说解释得更好。
但基本上,我想删除所有现在拥有具有相同 PlayerUID 的活着玩家的死亡玩家。如果我更擅长编码,我可以看到许多我可以使用的变量,例如 PlayerUID(必须)、Datestamp、Alive 和 generation。可能只需要其中的两个,一个是 PlayerUID。
非常感谢。
对我来说最简单的似乎是这样的:按 PlayerUID 排序并删除每个 PlayerUID 的所有内容,除了(?)最新的日期戳。如果他们在调用此脚本之前没有创建新角色,这将使玩家的统计数据不在他们的尸体中。
最佳答案
所以基本上,您需要确保在玩家的插入(或将 ALIVE 更新为 1)时,您删除了所有先前的(以防万一,通常应该只有一个)与该玩家具有相同 PlayerUID 的玩家新的。
最简单的方法是创建一个触发器,该触发器将在插入之前运行(如果可以的话,在 UPDATE 时将 ALIVE 更新为 1 以恢复一个)。使用新播放器的 UID 在特定 UID 的表上运行删除。就是这么简单;)
对于触发器,这应该是这样的
Create trigger CLEAR_PLAYER
before insert on dayz_epoch.character_data
For Each Row
Delete from dayz_epoch.character_data
where PlayerUID = NEW.PlayerUID
and Alive = 0 --Just in case, but what will happen if there where a line with Alive = 1 ?
这将在插入表 dayz_epoch.character_data 之前执行
(所以不要删除新的)。这将删除具有插入行的 PlayerUID
的每一行。如果您想增加一些安全性,您可以在条件中添加 and Alive= 0
。
编辑:
好久没写trigger了,我用的是official doc提醒一句。有需要的可以看看。
关于mysql - Arma 2 DayZ Epoch SQL 尸体清理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971004/
我一直在尝试找出一种方法来做类似 Delete all records except the most recent one? 的事情但我一直无法将其应用于我的情况。 我的情况: https://gy
我是一名优秀的程序员,十分优秀!