특정 열이 업데이트 될 때 타임 스탬프를 넣고 싶습니다. 값 dateColumn1 : 날짜, 컬럼이 업데이트 된 2 열 : 값 dateColumn2 :PHP로 특정 열을 업데이트 할 때 MySQL 타임 스탬프
예를열 1의 경우
날짜 2 열이 나는 기능 getTimestamp()를 사용
를 업데이트했지만, 그렇지 않습니다 작동하는 것 같습니다.누구나 PHP와 MYSQL에서이 작업을 수행 할 수있는 조언을 해주실 수 있습니까?
감사
특정 열이 업데이트 될 때 타임 스탬프를 넣고 싶습니다. 값 dateColumn1 : 날짜, 컬럼이 업데이트 된 2 열 : 값 dateColumn2 :PHP로 특정 열을 업데이트 할 때 MySQL 타임 스탬프
예를열 1의 경우
날짜 2 열이 나는 기능 getTimestamp()를 사용
를 업데이트했지만, 그렇지 않습니다 작동하는 것 같습니다.누구나 PHP와 MYSQL에서이 작업을 수행 할 수있는 조언을 해주실 수 있습니까?
감사
UPDATE table
SET column1='new value', timestampcolumn=NOW()
WHERE ...
하나의 방법입니다. 레코드의 내용이 업데이트 될 때마다 타임 스탬프가 변경되지 않는다면 원시 "타임 스탬프"필드 유형을 사용하십시오. 그러면 레코드가 삽입되거나 변경 될 때 "now"로 업데이트됩니다.
나는과 같이, NOW()는 MySQL 함수를 사용하여 선호 : 당신은 단지 데이터베이스에서이 작업을 수행하려면
UPDATE table1 SET column2 = value, dateColumn2 = NOW() WHERE somethingsomething
열이 DATETIME 또는 TIMESTAMP 여야합니까? –
원하는 작업에 따라 다릅니다. http://dev.mysql.com/doc/refman/5.0/en/timestamp.html –
, 당신은 당신의 상태를 확인하고 필요한 경우 특정 타임 스탬프를 업데이트하는 트리거를 작성할 수 . 그러나 나는 당신이 방아쇠를 당기는 것을 원하지 않는다고 가정하고 있습니다. 트리거는 장점이 있습니다. PHP 코드를 작성하지 않고도 행의 이전 값과 새 값에 액세스 할 수 있습니다.
어쨌든, 경우에 당신이 여기 트리거에 대한 몇 가지 예제 코드가 필요 (SQL은 조심) :
DELIMITER $$
DROP TRIGGER IF EXISTS Table1_UpdateTrigger $$
CREATE TRIGGER Table1_UpdateTrigger BEFORE UPDATE ON Table1
FOR EACH ROW BEGIN
IF OLD.column1 != NEW.column1 THEN
SET NEW.dateColumn1 = NOW();
END IF;
IF OLD.column2 != NEW.column2 THEN
SET NEW.dateColumn2 = NOW();
END IF;
END;
$$
DELIMITER ;
Substite 표를 실제 열 이름 등 실제 테이블 이름, 컬럼 1,와.
다른 방법은 PHP의 이전 값과 새로운 값을 비교하는 것입니다. 예 : 이전 데이터를 가져 오는 쿼리를 수행하고 확인하려는 필드를 비교 한 다음 새 타임 스탬프를 설정하기 위해 변경된 필드 당 하나의 업데이트 쿼리를 수행합니다.
조건문을 사용하십시오. 예를 들어 다음과 같은 트리거에서 '암호 변경 시간'은 암호 열이 변경된 경우에만 업데이트됩니다.
CREATE TRIGGER update_password
BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
IF OLD.password <> NEW.password THEN
SET NEW.password_changed_on = NOW();
END IF;
END //
이와 관련하여 다음을 살펴 보는 것이 좋습니다. http://dev.mysql.com/doc/refman/5.0/en/timestamp.html 타임 스탬프 필드 유형. – Christa
그래서 Timestamp 필드 유형을 사용할 수 없으며 Datetime을 사용해야합니까? –
예, TIMESTAMP는 행의 모든 업데이트에서 필드를 덮어 씁니다. 자신을 제어하려면 DATETIME을 사용하십시오. –