복붙노트

[SQL] 때 타임 스탬프 (자동) 업데이트됩니까?

SQL

때 타임 스탬프 (자동) 업데이트됩니까?

나는 유형 TIMESTAMP의 테이블에 열이 기본적으로있는 경우 : 내가 값을 업데이트 할 경우 CURRENT_TIMESTAMP이 열은 현재 타임 스탬프로 업데이트됩니까 동일한 행의 다른 열의? 하지 않습니다하지만 난 확신이 발생해야하는 경우 아니라고 보인다. 나는 (MySQL의 문서에서) 무엇을이 방법을 이해할 수 없다 :

해결법

  1. ==============================

    1.명령 SHOW을 지정 테이블 만들기 어떤

    명령 SHOW을 지정 테이블 만들기 어떤

    그런 다음 테이블 정의를 봐주세요.

    아마 이런 라인을 가지고

    logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    

    그것을있다. 명시적인 타임 스탬프 설정없이 INSERT는 현재 시간에 사용 DEFAULT CURRENT_TIMESTAMP 수단. 마찬가지로, ON UPDATE CURRENT_TIMESTAMP 수단 현재 타임 스탬프 값의 업데이트에 명시 적 소인 결과없이 업데이트있다.

    테이블을 만들 때이 기본 동작을 제어 할 수 있습니다.

    타임 스탬프 열이 처음부터 제대로 생성되지 않은 경우 또는, 당신은 그것을 변경할 수 있습니다.

    ALTER TABLE whatevertable
         CHANGE whatevercolumn 
                whatevercolumn TIMESTAMP NOT NULL
                               DEFAULT CURRENT_TIMESTAMP 
                               ON UPDATE CURRENT_TIMESTAMP;
    

    이것은 당신의 타임 스탬프 열을 업데이트하기 위해 자동으로 테이블에 모두 INSERT 및 UPDATE 작업을하게됩니다. 당신은 타임 스탬프를 변경하지 않고 whatevertable 업데이트하려면,

    당신은 업데이트의이 종류를 발행 할 필요가있다.

    UPDATE whatevertable
       SET something = 'newvalue',
           whatevercolumn = whatevercolumn
     WHERE someindex = 'indexvalue'
    

    그리고,이 TIMESTAMP 컬럼 만하지 DATETIME 또는 DATE 열이 작동합니다. 열 시간 소인 때문에, 시간대는 회계 : 올바르게 구성된 서버 시스템에서,이 값은 항상 UTC에 저장 및 검색에 현지 시간으로 번역했다.

  2. ==============================

    2.나는이 같은 타임 스탬프 열을 정의 할 수 있다고 생각

    나는이 같은 타임 스탬프 열을 정의 할 수 있다고 생각

    CREATE TABLE t1 
    (
        ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );
    

    여기를 봐

  3. ==============================

    3.데이터베이스에 트리거를 추가 :

    데이터베이스에 트리거를 추가 :

    DELIMITER //
    CREATE TRIGGER update_user_password 
      BEFORE UPDATE ON users
      FOR EACH ROW
        BEGIN
          IF OLD.password <> NEW.password THEN
            SET NEW.password_changed_on = NOW();
          END IF;
        END //
    DELIMITER ;
    

    암호 열이 변경 될 때 암호 변경 시간은 업데이트됩니다.

  4. ==============================

    4.행의 다른 칼럼의 값은 현재 값에서 변경 될 때 자동으로 업데이트 된 열은 자동으로 현재 타임 스탬프를 갱신한다. 다른 모든 열이 현재 값으로 설정되어 있으면 자동으로 업데이트되는 열은 변경되지 않습니다.

    행의 다른 칼럼의 값은 현재 값에서 변경 될 때 자동으로 업데이트 된 열은 자동으로 현재 타임 스탬프를 갱신한다. 다른 모든 열이 현재 값으로 설정되어 있으면 자동으로 업데이트되는 열은 변경되지 않습니다.

    그것의 당신이 하나 개의 행이 상상하게 설명합니다 :

    -------------------------------
    | price | updated_at          |
    -------------------------------
    |  2    | 2018-02-26 16:16:17 |
    -------------------------------
    

    이제, 당신은 다음 업데이트 열을 실행하는 경우 :

     update my_table
     set price = 2
    

    가격 값이 실제로 변경되지 않았습니다 이후는, updated_at의 값을 변경하지 않을 것이다 (이미이 있었다).

    당신이 (가격 <> 3)이 아닌 가격 값, 해당 행의 다음 updated_at 값이 다른 행이있는 경우 그러나 CURRENT_TIMESTAMP에 업데이트됩니다.

  5. ==============================

    5.새로운 사람들이이 혼란 때문에 UPDATE CURRENT_TIMESTAMP를 어디서 찾을 수 있는지 추가.

    새로운 사람들이이 혼란 때문에 UPDATE CURRENT_TIMESTAMP를 어디서 찾을 수 있는지 추가.

    대부분의 사람들은 그것 같이 phpMyAdmin에 또는 무언가를 사용합니다.

    기본 값 당신은 CURRENT_TIMESTAMP를 선택

    속성 (다른 드롭 다운) 당신이 UPDATE CURRENT_TIMESTAMP를 선택

  6. from https://stackoverflow.com/questions/18962757/when-is-a-timestamp-auto-updated by cc-by-sa and MIT license