타임스탬프(자동)는 언제 갱신됩니까?
유형 테이블에 열이 있는 경우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 이전 버전에서만 동작)TIMESTAMP
s) 사용하는 경우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
'itsource' 카테고리의 다른 글
CSS 이행 효과를 일시적으로 디세블로 하는 가장 깨끗한 방법은 무엇입니까? (0) | 2023.01.28 |
---|---|
Matplotlib을 사용하여 2D 열 지도 그리기 (0) | 2023.01.28 |
Java에서 로컬 변수가 초기화되지 않는 이유는 무엇입니까? (0) | 2023.01.28 |
성능 저하가 시작되기 전에 MySQL 데이터베이스를 얼마나 크게 만들 수 있습니까? (0) | 2023.01.28 |
키와 값의 개별 목록에서 사전을 만들려면 어떻게 해야 합니까? (0) | 2023.01.19 |