【问题标题】:mysql can i create an updated_at column for a specific fieldmysql 我可以为特定字段创建一个 updated_at 列吗
【发布时间】:2019-10-10 11:57:14
【问题描述】:

MYSQL 为特定字段创建一个 updated_at 列。

我可以为特定列创建一个 updated_at(timestamp) 列吗 当我更改特定列时,必须更改 updated_at 列

【问题讨论】:

  • 这已经是默认行为了......
  • 您必须尝试创建触发器。

标签: php mysql laravel


【解决方案1】:

创建一个将监视表上的任何更新的触发器

然后检查 if 子句中的列更改

CREATE TRIGGER update_date BEFORE UPDATE ON myTable 
FOR EACH ROW 
BEGIN
IF NEW.column1 <=> OLD.column1 THEN
    SET new.updated_at = NOW()
END IF;
END;

【讨论】:

    【解决方案2】:

    您需要创建 Mysql 触发器才能完成此操作。如果您打算从迁移中执行此操作,这里有一个示例代码,您必须使用您的表:

    public function up()
        {
            DB::unprepared('
            CREATE TRIGGER tr_User_Name_Update AFTER UPDATE ON `users` FOR EACH ROW
                BEGIN
                   IF NEW.column1 <=> OLD.column1 THEN
                    -- RUN YOUR LOGIC HERE--
                   END IF;
                END
            ');
        }
    
        public function down()
        {
            DB::unprepared('DROP TRIGGER `tr_User_Name_Update`');
        }
    

    我希望这将帮助您开始。

    【讨论】:

      【解决方案3】:

      在您的模型中,您可以覆盖 updateTimestamps() 方法(在 Illuminate\Database\Eloquent\Concerns\HasTimestamps 特征中)。

      我会这样做:

      在您的数据库表中有一个额外的datetime 字段。假设您要跟踪name 列,我将有一个名为name_updated_atdatetime 字段。

      在你的模型中使用这个方法:

      protected function updateTimestamps()
      {
          // update the timestamp fields as usual
          parent::updateTimestamps();
      
          // if the name column has changed, then update the
          // name_updated_at field too
          if ($this->isDirty('name') {
              $this->name_updated_at = $this->freshTimestamp();
          }
          return $this;
      }
      

      该函数在模型的save() 方法中调用(好的,通过performInsert()performUpdate() 调用。

      这可以避免在 MySQL 中包含应用程序代码并将其保留在您的应用程序中。

      【讨论】:

        猜你喜欢
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2020-11-14
        • 2012-01-26
        • 1970-01-01
        相关资源
        最近更新 更多