【问题标题】:tell mysql to ignore updates/inserts for auto increment values告诉 mysql 忽略自动增量值的更新/插入
【发布时间】:2017-11-28 22:59:45
【问题描述】:

有没有办法告诉 mysql 忽略任何尝试为自动增量列分配任何值?我们正在使用 slick,它似乎试图在创建新行时将值 0 分配给任何自动增量列。这些自增列不是主键。

【问题讨论】:

  • 您需要在这里给出一个更具体的示例,例如您实际运行的查询或生成该查询的代码。如果您的列不能为空并且设置为AUTO_INCREMENT,那么如果您没有提供值,它将自动获取一个值。

标签: mysql auto-increment


【解决方案1】:

使用 before insert 触发器,您应该能够执行SET NEW.id = NULLIF(NEW.id, 0); 之类的操作。当然,这意味着在不先删除触发器的情况下,任何东西都不能将 0 插入到字段中。 (尽管更新查询仍然可以将其设置为 0)。

【讨论】:

  • 什么可能是“更新前”的触发器来分配 NEW.id 与更新前相同的值?这样我可以避免使用新值进行更新?
  • 我认为SET NEW.id = IF(NEW.id = 0, OLD.id, NEW.id); 只是为了防止它被更改为0,或者SET NEW.id = OLD.id; 是为了防止id 被更改。 (不是 100% 确定,但如果您在外键上更新级联,这可能会导致问题。)
  • 该字段不适用于外键,如果有人对其执行更新,我需要保留它获得的第一个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2018-10-07
相关资源
最近更新 更多