2009-12-17 7 views
0

여러 사용자가 액세스 할 수있는 데이터베이스가 있습니다. 누군가가 새 레코드를 입력하거나 레코드를 수정할 때마다 그/그녀의 사용자 이름과 입력 한 날짜가 레코드 자체와 동일한 테이블의 2 열에 저장되도록 테이블을 설정할 수있는 방법이 있습니까? 표는 다음과 같이 보입니다.자동으로 레코드에 사용자 및 날짜 추가

Id | Name | Username | Date Entered | Date Modified 
1 | Cat | john | 1999-05-05 | 1996-06-06 

저는 phpMyAdmin 인 GUI를 사용하고 있습니다.

감사합니다.

답변

1

데이터 형식 선언 다음에 NOT NULL을 사용하여 테이블을 만들 때 열에 null 값을 허용하지 않도록 설정할 수 있습니다. 그렇지 않으면 ALTER TABLE 문을 사용하여 이미 존재하는 열이 있거나 기존 테이블에 열을 추가하는 경우 열을 변경합니다.

누군가가 레코드 추가를 중지하지만 업데이트하지 않습니다. 참조 할 별도의 사용자 테이블이있는 경우 외래 키 관계를 사용하여 사용자 열이 채워지면 유효한 사용자와 함께 완료됩니다.

값이 제공되지 않은 경우 DEFAULT 제약 조건을 사용하여 날짜 필드의 값을 설정할 수 있습니다. 당신의 DB의 모든 테이블에 두 개의 열을 추가하는 것은 아마 최적되지 않기 때문에 모든

ALTER TABLE x 
    ADD USER VARCHAR(45) NOT NULL 

ALTER TABLE x 
    ADD DATE_ENTERED DATE NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

ALTER TABLE x 
    ADD DATE_ENTERED DATE NOT NULL DEFAULT ON UPDATE CURRENT_TIMESTAMP 
+0

사용자가 레코드를 업데이트하고 추가 할 수 있도록 할 수 있습니까? – Tim

+0

@Tim : 예, 사용자가 레코드를 추가 및 업데이트 할 수 있습니다. 값/널이 제공되지 않으면 DEFAULT 제한 조건이 값을 적용합니다. 기본 타임 스탬프 제약 조건에 대한 자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/timestamp.html을 참조하십시오. –

0

첫째, 당신은 감사 메커니즘을 설계하는 가장 좋은 방법에 대해 생각 시간을 보내고 할 수 있습니다.

당신이 설명하는 것을하기 위해 당신이 찾고있는 것은 방아쇠입니다. 이것은 지정된 조작이 호출 될 때마다 실행될 SQL 부분입니다. 귀하의 경우에 대한 대략적인 예 :

것은 "테이블 _"

에 삽입 "테이블 _"에 삽입 (사용자, 시간) 후 트리거 감사 을 만들 나는 정확한 MySQL의 구문을 기억하지 않는다, 그러나 그것은 거친 당신이 필요한 것의 예. 명확하지 않은 경우 후속 질문을하십시오.

관련 문제