itsource

타임스탬프(자동)는 언제 갱신됩니까?

mycopycode 2023. 1. 28. 09:35
반응형

타임스탬프(자동)는 언제 갱신됩니까?

유형 테이블에 열이 있는 경우TIMESTAMP디폴트로는 CURRENT_TIMESTamp는 같은 행에 있는 다른 컬럼의 값을 갱신하면 이 컬럼이 현재 타임스탬프로 갱신됩니까?
아닌 것 같지만 이것이 일어나야 하는 것인지 잘 모르겠다.
이것이 무엇을 의미하는지 이해할 수 없습니다(MySQL 문서 참조).

열이 자동으로 업데이트되는 경우 행의 다른 열 값이 현재 값에서 변경되면 열이 현재 타임스탬프로 자동 업데이트됩니다.다른 모든 열이 현재 값으로 설정된 경우 열은 변경되지 않습니다.다른 열이 변경될 때 열이 업데이트되지 않도록 하려면 현재 값으로 명시적으로 설정하십시오.다른 컬럼이 변경되지 않은 경우에도 컬럼을 갱신하려면 컬럼이 가져야 할 값으로 명시적으로 설정합니다.] 2

명령을 내리다SHOW CREATE TABLE whatever

그런 다음 표의 정의를 확인합니다.

아마 이런 선이 있을 거예요.

logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

그 안에 있어요.DEFAULT CURRENT_TIMESTAMP즉, 어떤 것이든INSERT명시적인 타임스탬프 설정이 없는 경우 현재 시각이 사용됩니다.저도 마찬가지예요.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(MySQL 버전 5.6.5 이전 버전에서만 동작)TIMESTAMPs) 사용하는 경우TIMESTAMP시간대가 고려됩니다.올바르게 설정되어 있는 서버 머신에서는, 이러한 값은 항상 UTC 에 보존되어 취득시에 로컬 시각으로 변환됩니다.

타임스탬프 컬럼을 이렇게 정의해야 할 것 같아요.

표 t1 작성(TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

여기를 참조해 주세요.

행의 다른 열의 값이 현재 값에서 변경되면 자동으로 현재 타임스탬프로 업데이트됩니다.다른 모든 열이 현재 값으로 설정된 경우 자동 갱신된 열은 변경되지 않습니다.

설명을 위해 행이 하나뿐이라고 가정해 보겠습니다.

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

다음 업데이트 열을 실행하는 경우:

 update my_table
 set price = 2

가격값은 실제로 변경되지 않았기 때문에 updated_at 값은 변경되지 않습니다(이미 2개).

단, 가격값이 2가 아닌 다른 행이 있는 경우 해당 행의 updated_at 값(가격 <> 3)은 CURRENT_TIMESTamp로 갱신됩니다.

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

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 ;

비밀번호 변경 시간은 비밀번호 열이 변경되었을 때만 업데이트됩니다.

중 " " " " "UPDATE CURRENT_TIMESTAMP왜냐하면 새로운 사람들에게는 혼란스럽기 때문이다.

대부분의 사람들은 phpmyadmin 같은 것을 사용합니다.

선택한 기본값 CURRENT_TIMESTamp

UPDATE CURRENT_TIMESTamp 를 선택하는 속성(다른 드롭다운)

언급URL : https://stackoverflow.com/questions/18962757/when-is-a-timestamp-auto-updated

반응형