gpt4 book ai didi

如果其他字段(非键)发生更改,MySQL 会在插入时更新字段

转载 作者:行者123 更新时间:2023-11-29 14:59:41 24 4
gpt4 key购买 nike

我对此比较困惑......

我有一个像这样的表:


+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+
| dhcp | int(10) unsigned | NO | PRI | 0 | |
| ip | int(10) unsigned | NO | PRI | 0 | |
| mac | varchar(17) | YES | MUL | NULL | |
| lease | enum('fr','a','fi','a','u') | NO | MUL | free) | | |
| date | timestamp | NO | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| uid | varchar(255) | YES | | NULL | |
| starts_date | datetime | YES | | NULL | |
| starts_weekday | tinyint(1) | YES | | NULL | |
| ends_date | datetime | YES | | NULL | |
| ends_weekday | tinyint(1) | YES | | NULL | |
| first_seen | datetime | YES | | NULL | |
+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+

我刚刚添加了first_seen 列。我的想法是,我将使用 INSERT...ON DUPLICATE KEY UPDATE。 dhcpip 是正确的主键,因为我一次只想拥有它们的一条记录。因此,如果 mac 发生变化,它应该更新现有行(如果该 dhcp、ip 组合存在)。

但是,我希望每次看到(ip、dhcp、mac)组合时都更新first_seen...也就是说,如果“mac”的值发生变化,我想更新first_seen。如果“mac”的值保持不变,我想保持first_seen不变。

有没有简单的方法可以在 SQL 中执行此操作...即 IF() 或其他什么?或者我是否必须使用 PHP 脚本中的另一个 SELECT 来处理此问题(请记住,我们正在解析文件以获取此数据,并插入大约 10-16k 行,因此时间是一个因素)。

谢谢,杰森

最佳答案

您是否考虑过使用triggers ?这是当某些其他事件(例如更新 mac 列)发生时发生的 MySQL 服务器端事件。

关于如果其他字段(非键)发生更改,MySQL 会在插入时更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566437/

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