Методы автоматического обновления столбца update_at в таблицах SQL

Столбец

в таблице SQL. Я предоставлю вам несколько подходов и примеры кода для решения этой задачи с использованием различных систем баз данных.

Обратите внимание, что в примерах кода предполагается наличие таблицы со столбцом с именем updated_atв базе данных.

  1. MySQL:

    -- Method 1: Use a TIMESTAMP column with the DEFAULT CURRENT_TIMESTAMP attribute
    ALTER TABLE your_table
    MODIFY COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
    -- Method 2: Use a TRIGGER to update the column on every update
    DELIMITER //
    CREATE TRIGGER trigger_name
    BEFORE UPDATE ON your_table
    FOR EACH ROW
    SET NEW.updated_at = CURRENT_TIMESTAMP;
    //
    DELIMITER ;
  2. PostgreSQL:

    -- Method 1: Use a TIMESTAMP column with the DEFAULT statement
    ALTER TABLE your_table
    ALTER COLUMN updated_at SET DEFAULT CURRENT_TIMESTAMP;
    -- Method 2: Use a TRIGGER to update the column on every update
    CREATE OR REPLACE FUNCTION update_updated_at()
    RETURNS TRIGGER AS $$
    BEGIN
     NEW.updated_at = NOW();
     RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
    CREATE TRIGGER trigger_name
    BEFORE UPDATE ON your_table
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at();
  3. SQL Server:

    -- Method 1: Use a DATETIME column with the DEFAULT statement
    ALTER TABLE your_table
    ADD CONSTRAINT DF_your_table_updated_at
    DEFAULT GETDATE() FOR updated_at;
    -- Method 2: Use a TRIGGER to update the column on every update
    CREATE TRIGGER trigger_name
    ON your_table
    AFTER UPDATE
    AS
    BEGIN
     UPDATE your_table
     SET updated_at = GETDATE()
     FROM your_table
     INNER JOIN inserted ON your_table.primary_key = inserted.primary_key;
    END;
  4. SQLite:

    -- Method: Use a TRIGGER to update the column on every update
    CREATE TRIGGER trigger_name
    AFTER UPDATE ON your_table
    FOR EACH ROW
    BEGIN
     UPDATE your_table
     SET updated_at = DATETIME('now')
     WHERE your_table.primary_key = OLD.primary_key;
    END;