title: Prevent sequelize to insert timestamp
body: <p>There are many similar questions, but I already tried most of suggested solutions without luck.</p>
  
  <p>I already have database(mysql) so I skipped model definition and used sequelize-auto (programmatic). The first issue came with deprecated dependencies (sequelize-auto use sequelize v3). </p>
  
  <p>Model generated from existing db via sequelize-auto (sequelize v3):</p>
  
  <pre><code>{
     "id":{
        "type":"INT(10) UNSIGNED",
        "allowNull":false,
        "defaultValue":null,
        "primaryKey":true,
        "foreignKey":{
           "source_table":"db_name",
           "source_schema":"db_name",
           "target_schema":null,
           "constraint_name":"PRIMARY",
           "source_column":"id",
           "target_table":null,
           "target_column":null,
           "extra":"",
           "column_key":"PRI",
           "isPrimaryKey":true
        }
     },
     "name":{
        "type":"VARCHAR(255)",
        "allowNull":false,
        "defaultValue":null,
        "primaryKey":false
     },
     "start":{
        "type":"DATE",
        "allowNull":false,
        "defaultValue":null,
        "primaryKey":false
     },
     "end":{
        "type":"DATE",
        "allowNull":false,
        "defaultValue":null,
        "primaryKey":false
     },
     "active":{
        "type":"TINYINT(1)",
        "allowNull":false,
        "defaultValue":"0",
        "primaryKey":false
     },
     "updated_at":{
        "type":"TIMESTAMP",
        "allowNull":false,
        "defaultValue":"CURRENT_TIMESTAMP",
        "primaryKey":false
     }
  }
  </code></pre>
  
  <p>Column <code>updated_at</code> definition in create.sql:</p>
  
  <pre><code>updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  </code></pre>
  
  <p>So generated model is completely missing <code>ON UPDATE CURRENT_TIMESTAMP</code>.</p>
  
  <p>Once models are generated, I use them for sequelize v4 together with express.</p>
  
  <p>Fortunatelly, it is possible to set <code>timestamps: false</code> in model definition, but it does not work. I also tried <code>updated_at: false</code> (together with <code>underscored: true</code>) without luck (it had no effect at all - still same error).</p>
  
  <p>The only thing that worked was complete removing <code>updated_at</code> key from model before define. After that all worked like charm, but I need filter this column so it is not solution.</p>
  
  <p>model.js:</p>
  
  <pre><code>const SequelizeAuto = require("sequelize-auto");
  const Sequelize = require("sequelize");
  const config = require("../conf/config.json");
  
  
  const Op = Sequelize.Op; // fixed sequelize v3 bug
  var options = {
      database: config.db.name,
      username: config.db.username,
      password: config.db.password,
      host: config.db.host,
      dialect: config.db.dialect,
      operatorsAliases: Op,
      pool: {
          max: 5,
          min: 0,
          idle: 10000
      },
      directory: false, // prevents the program from writing to disk
      //port: 'port',
      //tables: [],
      additional: {
          underscored: true,
          timestamps: false
      }
  };
  
  const modelOptions = {
      bb_campaign: {
          alias: "campaign"
      },
      bb_campaign_stats: {
          alias: "stat"
      }
  };
  
  function getTableOptions(tableName) {
      return {
          freezeTableName: true,
          underscored: true,
          timestamps: false,
          updated_at: false,
          tableName: tableName
      }
  }
  
  // SequelizeAuto uses old sequelize v3 + mysql (not mysql2)
  var db_map = new SequelizeAuto(config.db.name, config.db.username, config.db.password, options);
  
  module.exports = new Promise((resolve, reject) =&gt; db_map.run((err) =&gt; {
      if (err) {
          reject(err);
          return;
      }
  
      // atm session is closed, we need to create new
      // https://github.com/sequelize/sequelize-auto/issues/243
      let db = {};
      db.sequelize = new Sequelize(options);
      for (tableName in db_map.tables) {
          let alias = tableName in modelOptions ? 
              modelOptions[tableName].alias : tableName;
  
          db[alias] = db.sequelize.define(alias, db_map.tables[tableName], getTableOptions(tableName));
          console.log('Registered model for table %s as %s.', tableName, alias);
  
          // asociace ted nepotrebujeme
          //if (tableName in db_map.foreignKeys) {}
      }
      resolve(db);
  }));
  </code></pre>
  
  <p>Insert:</p>
  
  <pre><code>Executing (default): INSERT INTO `bb_campaign` (`id`,`name`,`start`,`end`, `active`,`updated_at`) VALUES ('216450','item name','2018-12-02','2018-12-08',1,'CURRENT_TIMESTAMP') ON DUPLICATE KEY UPDATE `id`=VALUES(`id`), `name`=VALUES(`name`), `start`=VALUES(`start`), `end`=VALUES(`end`), `active`=VALUES(`active`);
  </code></pre>
  
  <p>DB error:</p>
  
  <blockquote>
    <p>Unhandled rejection SequelizeDatabaseError: Incorrect datetime value:
    'CURRENT_TIMESTAMP' for column 'updated_at' at row 1</p>
  </blockquote>
  
  <p>Any suggestions?</p>