다음 요구 사항이 있습니다.timestamp, rowversion 및 datetime - 행을 삽입하거나 업데이트 할 때 표시가 필요합니다.
고유 한 자동 증분 Int ID 및 데이터 열이있는 테이블이 있습니다. 다음이 필요합니다. 행이 해당 테이블에 삽입 될 때마다 테이블의 오른쪽 끝에있는 열은 해당 삽입의 전체 datetime을 보유해야합니다. 또한 행이 업데이트 된 경우 해당 행의 업데이트 시간을 보유하도록 업데이트되도록 해당 행을 테이블에 삽입하는 전체 datetime을 보유하는 열이 필요합니다. 이제
이 작업을 수행 할 수있는 분명하고 매우 간단한 방법은 다음과 같습니다 당신은 당신의 테이블을 만들 :
ALTER TABLE My_Test_Table
ADD [timestamp] datetime;
ALTER TABLE My_Test_Table
ADD CONSTRAINT DF_My_Test_Table_timestamp DEFAULT GETDATE() FOR [timestamp];
:
create table My_Test_Table
(my_id int identity not null,
my_data nvarchar(max));
당신이 당신의 테이블 그것에 날짜 컬럼과 기본 제약 조건을 추가하는 변경을
다음과 같이 업데이트 할 수있는 좋은 트리거를 만듭니다.
CREATE TRIGGER DML_Trigger_update_My_Test_Table
ON My_Test_Table
FOR UPDATE
AS
IF @@ROWCOUNT <> 0
BEGIN
IF EXISTS (SELECT * FROM INSERTED) AND EXISTS (SELECT * FROM DELETED)
BEGIN
UPDATE My_Test_Table
SET [timestamp] = GETDATE()
FROM INSERTED
WHERE My_Test_Table.my_id = INSERTED.my_id;
END
END
이제 까다로운 부분은 다음과 같습니다. 위의 범위를 벗어나는 이유 때문에 위와 똑같이 구현하지만 트리거가 필요하지 않습니다. 가능합니까? SQL 형식 타임 스탬프 또는 rowversion을 사용하고 싶지 않습니다.이 작업은 저에게 효과적이지 않습니다. 날짜가 필요합니다. 밀리 초 단위로 해당 열에 명확하게 저장해야합니다. 어떤 아이디어라도 높이 평가할 수 있습니다.